Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ AwaitUnsafeOnCompleted< TAwaiter >()

static void System.Runtime.CompilerServices.AsyncTaskMethodBuilder< TResult >.AwaitUnsafeOnCompleted< TAwaiter > ( ref TAwaiter awaiter,
IAsyncStateMachineBox box )
inlinestaticpackage
Type Constraints
TAwaiter :ICriticalNotifyCompletion 

Definition at line 232 of file AsyncTaskMethodBuilder.cs.

232 : ICriticalNotifyCompletion
233 {
234 if (default(TAwaiter) != null && awaiter is ITaskAwaiter)
235 {
236 TaskAwaiter.UnsafeOnCompletedInternal(Unsafe.As<TAwaiter, TaskAwaiter>(ref awaiter).m_task, box, continueOnCapturedContext: true);
237 return;
238 }
239 if (default(TAwaiter) != null && awaiter is IConfiguredTaskAwaiter)
240 {
241 ref ConfiguredTaskAwaitable.ConfiguredTaskAwaiter reference = ref Unsafe.As<TAwaiter, ConfiguredTaskAwaitable.ConfiguredTaskAwaiter>(ref awaiter);
242 TaskAwaiter.UnsafeOnCompletedInternal(reference.m_task, box, reference.m_continueOnCapturedContext);
243 return;
244 }
245 if (default(TAwaiter) != null && awaiter is IStateMachineBoxAwareAwaiter)
246 {
247 try
248 {
249 ((IStateMachineBoxAwareAwaiter)(object)awaiter).AwaitUnsafeOnCompleted(box);
250 return;
251 }
252 catch (Exception exception)
253 {
255 return;
256 }
257 }
258 try
259 {
260 awaiter.UnsafeOnCompleted(box.MoveNextAction);
261 }
262 catch (Exception exception2)
263 {
264 System.Threading.Tasks.Task.ThrowAsync(exception2, null);
265 }
266 }
static void ThrowAsync(Exception exception, SynchronizationContext targetContext)
Definition Task.cs:1806

References System.exception, System.Runtime.CompilerServices.TaskAwaiter< TResult >.m_task, System.Threading.Tasks.Task< TResult >.ThrowAsync(), and System.Runtime.CompilerServices.TaskAwaiter< TResult >.UnsafeOnCompletedInternal().