Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ValueTaskAwaiter.cs
Go to the documentation of this file.
5
7
8public readonly struct ValueTaskAwaiter : ICriticalNotifyCompletion, INotifyCompletion, IStateMachineBoxAwareAwaiter
9{
10 internal static readonly Action<object> s_invokeActionDelegate = delegate(object state)
11 {
12 if (!(state is Action action))
13 {
15 }
16 else
17 {
18 action();
19 }
20 };
21
22 private readonly ValueTask _value;
23
24 public bool IsCompleted
25 {
26 [MethodImpl(MethodImplOptions.AggressiveInlining)]
27 get
28 {
29 return _value.IsCompleted;
30 }
31 }
32
33 [MethodImpl(MethodImplOptions.AggressiveInlining)]
35 {
36 _value = value;
37 }
38
39 [MethodImpl(MethodImplOptions.AggressiveInlining)]
40 public void GetResult()
41 {
43 }
44
45 public void OnCompleted(Action continuation)
46 {
47 object obj = _value._obj;
48 if (obj is Task task)
49 {
50 task.GetAwaiter().OnCompleted(continuation);
51 }
52 else if (obj != null)
53 {
55 }
56 else
57 {
58 Task.CompletedTask.GetAwaiter().OnCompleted(continuation);
59 }
60 }
61
62 public void UnsafeOnCompleted(Action continuation)
63 {
64 object obj = _value._obj;
65 if (obj is Task task)
66 {
67 task.GetAwaiter().UnsafeOnCompleted(continuation);
68 }
69 else if (obj != null)
70 {
72 }
73 else
74 {
75 Task.CompletedTask.GetAwaiter().UnsafeOnCompleted(continuation);
76 }
77 }
78
80 {
81 object obj = _value._obj;
82 if (obj is Task task)
83 {
84 TaskAwaiter.UnsafeOnCompletedInternal(task, box, continueOnCapturedContext: true);
85 }
86 else if (obj != null)
87 {
89 }
90 else
91 {
92 TaskAwaiter.UnsafeOnCompletedInternal(Task.CompletedTask, box, continueOnCapturedContext: true);
93 }
94 }
95}
97{
98 private readonly ValueTask<TResult> _value;
99
100 public bool IsCompleted
101 {
102 [MethodImpl(MethodImplOptions.AggressiveInlining)]
103 get
104 {
105 return _value.IsCompleted;
106 }
107 }
108
109 [MethodImpl(MethodImplOptions.AggressiveInlining)]
111 {
112 _value = value;
113 }
114
115 [MethodImpl(MethodImplOptions.AggressiveInlining)]
117 {
118 return _value.Result;
119 }
120
121 public void OnCompleted(Action continuation)
122 {
123 object obj = _value._obj;
124 if (obj is Task<TResult> task)
125 {
126 task.GetAwaiter().OnCompleted(continuation);
127 }
128 else if (obj != null)
129 {
131 }
132 else
133 {
134 Task.CompletedTask.GetAwaiter().OnCompleted(continuation);
135 }
136 }
137
138 public void UnsafeOnCompleted(Action continuation)
139 {
140 object obj = _value._obj;
141 if (obj is Task<TResult> task)
142 {
143 task.GetAwaiter().UnsafeOnCompleted(continuation);
144 }
145 else if (obj != null)
146 {
148 }
149 else
150 {
151 Task.CompletedTask.GetAwaiter().UnsafeOnCompleted(continuation);
152 }
153 }
154
156 {
157 object obj = _value._obj;
158 if (obj is Task<TResult> task)
159 {
160 TaskAwaiter.UnsafeOnCompletedInternal(task, box, continueOnCapturedContext: true);
161 }
162 else if (obj != null)
163 {
165 }
166 else
167 {
168 TaskAwaiter.UnsafeOnCompletedInternal(Task.CompletedTask, box, continueOnCapturedContext: true);
169 }
170 }
171}
static Task CompletedTask
Definition Task.cs:1120
static readonly Action< object > s_invokeAsyncStateMachineBox
Definition ThreadPool.cs:18
static void ThrowArgumentOutOfRangeException(System.ExceptionArgument argument)
static void UnsafeOnCompletedInternal(Task task, IAsyncStateMachineBox stateMachineBox, bool continueOnCapturedContext)
static readonly Action< object > s_invokeActionDelegate