Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
AsyncLocal.cs
Go to the documentation of this file.
2
3namespace System.Threading;
4
5public sealed class AsyncLocal<T> : IAsyncLocal
6{
7 private readonly Action<AsyncLocalValueChangedArgs<T>> m_valueChangedHandler;
8
9 public T Value
10 {
11 [return: MaybeNull]
12 get
13 {
14 object localValue = ExecutionContext.GetLocalValue(this);
15 if (localValue != null)
16 {
17 return (T)localValue;
18 }
19 return default(T);
20 }
21 set
22 {
24 }
25 }
26
27 public AsyncLocal()
28 {
29 }
30
31 public AsyncLocal(Action<AsyncLocalValueChangedArgs<T>>? valueChangedHandler)
32 {
33 m_valueChangedHandler = valueChangedHandler;
34 }
35
36 void IAsyncLocal.OnValueChanged(object previousValueObj, object currentValueObj, bool contextChanged)
37 {
38 T previousValue = ((previousValueObj == null) ? default(T) : ((T)previousValueObj));
39 T currentValue = ((currentValueObj == null) ? default(T) : ((T)currentValueObj));
40 m_valueChangedHandler(new AsyncLocalValueChangedArgs<T>(previousValue, currentValue, contextChanged));
41 }
42}
AsyncLocal(Action< AsyncLocalValueChangedArgs< T > >? valueChangedHandler)
Definition AsyncLocal.cs:31
readonly Action< AsyncLocalValueChangedArgs< T > > m_valueChangedHandler
Definition AsyncLocal.cs:7
static void SetLocalValue(IAsyncLocal local, object newValue, bool needChangeNotifications)
static object GetLocalValue(IAsyncLocal local)
void OnValueChanged(object previousValue, object currentValue, bool contextChanged)