10 [__DynamicallyInvokable]
11 [HostProtection(
SecurityAction.LinkDemand, Synchronization =
true, ExternalThreading =
true)]
14 private sealed
class FromAsyncTrimPromise<TInstance> :
Task<TResult> where TInstance : class
16 internal static readonly
AsyncCallback s_completeFromAsyncResult = CompleteFromAsyncResult;
18 private TInstance m_thisRef;
20 private Func<TInstance, IAsyncResult, TResult> m_endMethod;
22 internal FromAsyncTrimPromise(TInstance thisRef, Func<TInstance, IAsyncResult, TResult> endMethod)
25 m_endMethod = endMethod;
28 internal static void CompleteFromAsyncResult(
IAsyncResult asyncResult)
30 if (asyncResult ==
null)
34 FromAsyncTrimPromise<TInstance> fromAsyncTrimPromise = asyncResult.
AsyncState as FromAsyncTrimPromise<TInstance>;
35 if (fromAsyncTrimPromise ==
null)
39 TInstance thisRef = fromAsyncTrimPromise.m_thisRef;
40 Func<TInstance, IAsyncResult, TResult> endMethod = fromAsyncTrimPromise.m_endMethod;
41 fromAsyncTrimPromise.m_thisRef =
null;
42 fromAsyncTrimPromise.m_endMethod =
null;
43 if (endMethod ==
null)
49 fromAsyncTrimPromise.Complete(thisRef, endMethod, asyncResult, requiresSynchronization:
true);
53 internal void Complete(TInstance thisRef, Func<TInstance, IAsyncResult, TResult> endMethod,
IAsyncResult asyncResult,
bool requiresSynchronization)
58 TResult result = endMethod(thisRef, asyncResult);
59 if (requiresSynchronization)
61 flag = TrySetResult(result);
65 DangerousSetResult(result);
75 flag = TrySetException(exceptionObject);
92 if (m_defaultScheduler ==
null)
96 return m_defaultScheduler;
102 [__DynamicallyInvokable]
105 [__DynamicallyInvokable]
108 return m_defaultCancellationToken;
114 [__DynamicallyInvokable]
117 [__DynamicallyInvokable]
120 return m_defaultScheduler;
126 [__DynamicallyInvokable]
129 [__DynamicallyInvokable]
132 return m_defaultCreationOptions;
138 [__DynamicallyInvokable]
141 [__DynamicallyInvokable]
144 return m_defaultContinuationOptions;
150 if (m_defaultScheduler !=
null)
152 return m_defaultScheduler;
156 return currTask.ExecutingTaskScheduler;
162 [__DynamicallyInvokable]
170 [__DynamicallyInvokable]
178 [__DynamicallyInvokable]
189 [__DynamicallyInvokable]
202 [__DynamicallyInvokable]
205 TaskFactory.CheckMultiTaskContinuationOptions(continuationOptions);
207 m_defaultCancellationToken = cancellationToken;
208 m_defaultScheduler = scheduler;
209 m_defaultCreationOptions = creationOptions;
210 m_defaultContinuationOptions = continuationOptions;
218 [__DynamicallyInvokable]
221 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
222 Task internalCurrent =
Task.InternalCurrent;
223 return Task<TResult>.StartNew(internalCurrent,
function, m_defaultCancellationToken, m_defaultCreationOptions, InternalTaskOptions.
None, GetDefaultScheduler(internalCurrent), ref stackMark);
233 [__DynamicallyInvokable]
236 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
237 Task internalCurrent =
Task.InternalCurrent;
238 return Task<TResult>.StartNew(internalCurrent,
function, cancellationToken, m_defaultCreationOptions, InternalTaskOptions.
None, GetDefaultScheduler(internalCurrent), ref stackMark);
248 [__DynamicallyInvokable]
251 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
252 Task internalCurrent =
Task.InternalCurrent;
253 return Task<TResult>.StartNew(internalCurrent,
function, m_defaultCancellationToken, creationOptions, InternalTaskOptions.
None, GetDefaultScheduler(internalCurrent), ref stackMark);
266 [__DynamicallyInvokable]
269 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
270 return Task<TResult>.StartNew(
Task.InternalCurrentIfAttached(creationOptions),
function, cancellationToken, creationOptions, InternalTaskOptions.
None, scheduler, ref stackMark);
279 [__DynamicallyInvokable]
282 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
283 Task internalCurrent =
Task.InternalCurrent;
284 return Task<TResult>.StartNew(internalCurrent,
function, state, m_defaultCancellationToken, m_defaultCreationOptions, InternalTaskOptions.
None, GetDefaultScheduler(internalCurrent), ref stackMark);
295 [__DynamicallyInvokable]
298 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
299 Task internalCurrent =
Task.InternalCurrent;
300 return Task<TResult>.StartNew(internalCurrent,
function, state, cancellationToken, m_defaultCreationOptions, InternalTaskOptions.
None, GetDefaultScheduler(internalCurrent), ref stackMark);
311 [__DynamicallyInvokable]
314 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
315 Task internalCurrent =
Task.InternalCurrent;
316 return Task<TResult>.StartNew(internalCurrent,
function, state, m_defaultCancellationToken, creationOptions, InternalTaskOptions.
None, GetDefaultScheduler(internalCurrent), ref stackMark);
330 [__DynamicallyInvokable]
333 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
334 return Task<TResult>.StartNew(
Task.InternalCurrentIfAttached(creationOptions),
function, state, cancellationToken, creationOptions, InternalTaskOptions.
None, scheduler, ref stackMark);
337 private static void FromAsyncCoreLogic(
IAsyncResult iar, Func<IAsyncResult, TResult> endFunction, Action<IAsyncResult> endAction,
Task<TResult> promise,
bool requiresSynchronization)
341 TResult result =
default(TResult);
344 if (endFunction !=
null)
346 result = endFunction(iar);
353 catch (OperationCanceledException ex3)
357 catch (Exception ex4)
369 if (promise.TrySetException(ex) && ex is ThreadAbortException)
371 promise.m_contingentProperties.m_exceptionsHolder.MarkAsHandled(calledFromFinalizer:
false);
376 if (AsyncCausalityTracer.LoggingOn)
378 AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, promise.
Id, AsyncCausalityStatus.Completed);
380 if (Task.s_asyncDebuggingEnabled)
382 Task.RemoveFromActiveTasks(promise.
Id);
384 if (requiresSynchronization)
386 promise.TrySetResult(result);
390 promise.DangerousSetResult(result);
402 [__DynamicallyInvokable]
405 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
406 return FromAsyncImpl(asyncResult, endMethod,
null, m_defaultCreationOptions, DefaultScheduler, ref stackMark);
417 [__DynamicallyInvokable]
420 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
421 return FromAsyncImpl(asyncResult, endMethod,
null, creationOptions, DefaultScheduler, ref stackMark);
433 [__DynamicallyInvokable]
436 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
437 return FromAsyncImpl(asyncResult, endMethod,
null, creationOptions, scheduler, ref stackMark);
442 if (asyncResult ==
null)
446 if (endFunction ==
null && endAction ==
null)
450 if (scheduler ==
null)
454 TaskFactory.CheckFromAsyncOptions(creationOptions, hasBeginMethod:
false);
455 Task<TResult> promise =
new Task<TResult>((
object)
null, creationOptions);
456 if (AsyncCausalityTracer.LoggingOn)
458 AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, promise.Id,
"TaskFactory.FromAsync", 0uL);
460 if (Task.s_asyncDebuggingEnabled)
462 Task.AddToActiveTasks(promise);
464 Task t =
new Task(delegate
466 FromAsyncCoreLogic(asyncResult, endFunction, endAction, promise, requiresSynchronization:
true);
468 if (AsyncCausalityTracer.LoggingOn)
470 AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Verbose, t.Id,
"TaskFactory.FromAsync Callback", 0uL);
472 if (Task.s_asyncDebuggingEnabled)
474 Task.AddToActiveTasks(t);
480 t.InternalRunSynchronously(scheduler, waitForCompletion:
false);
482 catch (Exception exceptionObject)
484 promise.TrySetException(exceptionObject);
489 ThreadPool.RegisterWaitForSingleObject(asyncResult.
AsyncWaitHandle, delegate
493 t.InternalRunSynchronously(scheduler, waitForCompletion: false);
495 catch (Exception exceptionObject2)
497 promise.TrySetException(exceptionObject2);
499 },
null, -1, executeOnlyOnce:
true);
510 [__DynamicallyInvokable]
511 public Task<TResult> FromAsync(Func<AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod,
object state)
513 return FromAsyncImpl(beginMethod, endMethod,
null, state, m_defaultCreationOptions);
524 [__DynamicallyInvokable]
527 return FromAsyncImpl(beginMethod, endMethod,
null, state, creationOptions);
530 internal static Task<TResult> FromAsyncImpl(Func<AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endFunction, Action<IAsyncResult> endAction,
object state,
TaskCreationOptions creationOptions)
532 if (beginMethod ==
null)
536 if (endFunction ==
null && endAction ==
null)
540 TaskFactory.CheckFromAsyncOptions(creationOptions, hasBeginMethod:
true);
541 Task<TResult> promise =
new Task<TResult>(state, creationOptions);
542 if (AsyncCausalityTracer.LoggingOn)
544 AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, promise.Id,
"TaskFactory.FromAsync: " + beginMethod.Method.Name, 0uL);
546 if (Task.s_asyncDebuggingEnabled)
548 Task.AddToActiveTasks(promise);
552 if (BinaryCompatibility.TargetsAtLeast_Desktop_V4_5)
554 IAsyncResult asyncResult = beginMethod(delegate(IAsyncResult iar)
556 if (!iar.CompletedSynchronously)
558 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization: true);
561 if (asyncResult.CompletedSynchronously)
563 FromAsyncCoreLogic(asyncResult, endFunction, endAction, promise, requiresSynchronization:
false);
568 IAsyncResult asyncResult2 = beginMethod(delegate(IAsyncResult iar)
570 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization:
true);
576 if (AsyncCausalityTracer.LoggingOn)
578 AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, promise.Id, AsyncCausalityStatus.Error);
580 if (Task.s_asyncDebuggingEnabled)
582 Task.RemoveFromActiveTasks(promise.Id);
584 promise.TrySetResult(
default(TResult));
598 [__DynamicallyInvokable]
599 public Task<TResult> FromAsync<TArg1>(Func<TArg1, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1,
object state)
601 return FromAsyncImpl(beginMethod, endMethod,
null, arg1, state, m_defaultCreationOptions);
614 [__DynamicallyInvokable]
615 public Task<TResult> FromAsync<TArg1>(Func<TArg1, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1,
object state,
TaskCreationOptions creationOptions)
617 return FromAsyncImpl(beginMethod, endMethod,
null, arg1, state, creationOptions);
620 internal static Task<TResult> FromAsyncImpl<TArg1>(Func<TArg1, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endFunction, Action<IAsyncResult> endAction, TArg1 arg1,
object state,
TaskCreationOptions creationOptions)
622 if (beginMethod ==
null)
626 if (endFunction ==
null && endAction ==
null)
630 TaskFactory.CheckFromAsyncOptions(creationOptions, hasBeginMethod:
true);
631 Task<TResult> promise =
new Task<TResult>(state, creationOptions);
632 if (AsyncCausalityTracer.LoggingOn)
634 AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, promise.Id,
"TaskFactory.FromAsync: " + beginMethod.Method.Name, 0uL);
636 if (Task.s_asyncDebuggingEnabled)
638 Task.AddToActiveTasks(promise);
642 if (BinaryCompatibility.TargetsAtLeast_Desktop_V4_5)
644 IAsyncResult asyncResult = beginMethod(arg1, delegate(IAsyncResult iar)
646 if (!iar.CompletedSynchronously)
648 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization: true);
651 if (asyncResult.CompletedSynchronously)
653 FromAsyncCoreLogic(asyncResult, endFunction, endAction, promise, requiresSynchronization:
false);
658 IAsyncResult asyncResult2 = beginMethod(arg1, delegate(IAsyncResult iar)
660 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization:
true);
666 if (AsyncCausalityTracer.LoggingOn)
668 AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, promise.Id, AsyncCausalityStatus.Error);
670 if (Task.s_asyncDebuggingEnabled)
672 Task.RemoveFromActiveTasks(promise.Id);
674 promise.TrySetResult(
default(TResult));
690 [__DynamicallyInvokable]
691 public Task<TResult> FromAsync<TArg1, TArg2>(Func<TArg1, TArg2, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1, TArg2 arg2,
object state)
693 return FromAsyncImpl(beginMethod, endMethod,
null, arg1, arg2, state, m_defaultCreationOptions);
708 [__DynamicallyInvokable]
709 public Task<TResult> FromAsync<TArg1, TArg2>(Func<TArg1, TArg2, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1, TArg2 arg2,
object state,
TaskCreationOptions creationOptions)
711 return FromAsyncImpl(beginMethod, endMethod,
null, arg1, arg2, state, creationOptions);
714 internal static Task<TResult> FromAsyncImpl<TArg1, TArg2>(Func<TArg1, TArg2, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endFunction, Action<IAsyncResult> endAction, TArg1 arg1, TArg2 arg2,
object state,
TaskCreationOptions creationOptions)
716 if (beginMethod ==
null)
720 if (endFunction ==
null && endAction ==
null)
724 TaskFactory.CheckFromAsyncOptions(creationOptions, hasBeginMethod:
true);
725 Task<TResult> promise =
new Task<TResult>(state, creationOptions);
726 if (AsyncCausalityTracer.LoggingOn)
728 AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, promise.Id,
"TaskFactory.FromAsync: " + beginMethod.Method.Name, 0uL);
730 if (Task.s_asyncDebuggingEnabled)
732 Task.AddToActiveTasks(promise);
736 if (BinaryCompatibility.TargetsAtLeast_Desktop_V4_5)
738 IAsyncResult asyncResult = beginMethod(arg1, arg2, delegate(IAsyncResult iar)
740 if (!iar.CompletedSynchronously)
742 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization: true);
745 if (asyncResult.CompletedSynchronously)
747 FromAsyncCoreLogic(asyncResult, endFunction, endAction, promise, requiresSynchronization:
false);
752 IAsyncResult asyncResult2 = beginMethod(arg1, arg2, delegate(IAsyncResult iar)
754 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization:
true);
760 if (AsyncCausalityTracer.LoggingOn)
762 AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, promise.Id, AsyncCausalityStatus.Error);
764 if (Task.s_asyncDebuggingEnabled)
766 Task.RemoveFromActiveTasks(promise.Id);
768 promise.TrySetResult(
default(TResult));
786 [__DynamicallyInvokable]
787 public Task<TResult> FromAsync<TArg1, TArg2, TArg3>(Func<TArg1, TArg2, TArg3, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1, TArg2 arg2, TArg3 arg3,
object state)
789 return FromAsyncImpl(beginMethod, endMethod,
null, arg1, arg2, arg3, state, m_defaultCreationOptions);
806 [__DynamicallyInvokable]
807 public Task<TResult> FromAsync<TArg1, TArg2, TArg3>(Func<TArg1, TArg2, TArg3, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1, TArg2 arg2, TArg3 arg3,
object state,
TaskCreationOptions creationOptions)
809 return FromAsyncImpl(beginMethod, endMethod,
null, arg1, arg2, arg3, state, creationOptions);
812 internal static Task<TResult> FromAsyncImpl<TArg1, TArg2, TArg3>(Func<TArg1, TArg2, TArg3, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endFunction, Action<IAsyncResult> endAction, TArg1 arg1, TArg2 arg2, TArg3 arg3,
object state,
TaskCreationOptions creationOptions)
814 if (beginMethod ==
null)
818 if (endFunction ==
null && endAction ==
null)
822 TaskFactory.CheckFromAsyncOptions(creationOptions, hasBeginMethod:
true);
823 Task<TResult> promise =
new Task<TResult>(state, creationOptions);
824 if (AsyncCausalityTracer.LoggingOn)
826 AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, promise.Id,
"TaskFactory.FromAsync: " + beginMethod.Method.Name, 0uL);
828 if (Task.s_asyncDebuggingEnabled)
830 Task.AddToActiveTasks(promise);
834 if (BinaryCompatibility.TargetsAtLeast_Desktop_V4_5)
836 IAsyncResult asyncResult = beginMethod(arg1, arg2, arg3, delegate(IAsyncResult iar)
838 if (!iar.CompletedSynchronously)
840 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization: true);
843 if (asyncResult.CompletedSynchronously)
845 FromAsyncCoreLogic(asyncResult, endFunction, endAction, promise, requiresSynchronization:
false);
850 IAsyncResult asyncResult2 = beginMethod(arg1, arg2, arg3, delegate(IAsyncResult iar)
852 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization:
true);
858 if (AsyncCausalityTracer.LoggingOn)
860 AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, promise.Id, AsyncCausalityStatus.Error);
862 if (Task.s_asyncDebuggingEnabled)
864 Task.RemoveFromActiveTasks(promise.Id);
866 promise.TrySetResult(
default(TResult));
872 internal static Task<TResult> FromAsyncTrim<TInstance, TArgs>(TInstance thisRef, TArgs args, Func<TInstance, TArgs, AsyncCallback, object, IAsyncResult> beginMethod, Func<TInstance, IAsyncResult, TResult> endMethod) where TInstance :
class 874 FromAsyncTrimPromise<TInstance> fromAsyncTrimPromise =
new FromAsyncTrimPromise<TInstance>(thisRef, endMethod);
875 IAsyncResult asyncResult = beginMethod(thisRef, args, FromAsyncTrimPromise<TInstance>.s_completeFromAsyncResult, fromAsyncTrimPromise);
876 if (asyncResult.CompletedSynchronously)
878 fromAsyncTrimPromise.Complete(thisRef, endMethod, asyncResult, requiresSynchronization:
false);
880 return fromAsyncTrimPromise;
883 private static Task<TResult> CreateCanceledTask(
TaskContinuationOptions continuationOptions, CancellationToken ct)
885 Task.CreationOptionsFromContinuationOptions(continuationOptions, out
TaskCreationOptions creationOptions, out InternalTaskOptions _);
886 return new Task<TResult>(canceled:
true,
default(TResult), creationOptions, ct);
898 [__DynamicallyInvokable]
901 if (continuationFunction ==
null)
905 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
906 return ContinueWhenAllImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
919 [__DynamicallyInvokable]
922 if (continuationFunction ==
null)
926 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
927 return ContinueWhenAllImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
940 [__DynamicallyInvokable]
943 if (continuationFunction ==
null)
947 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
948 return ContinueWhenAllImpl(tasks, continuationFunction,
null, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
964 [__DynamicallyInvokable]
967 if (continuationFunction ==
null)
971 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
972 return ContinueWhenAllImpl(tasks, continuationFunction,
null, continuationOptions, cancellationToken, scheduler, ref stackMark);
984 [__DynamicallyInvokable]
987 if (continuationFunction ==
null)
991 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
992 return ContinueWhenAllImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
1005 [__DynamicallyInvokable]
1008 if (continuationFunction ==
null)
1012 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1013 return ContinueWhenAllImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
1027 [__DynamicallyInvokable]
1030 if (continuationFunction ==
null)
1034 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1035 return ContinueWhenAllImpl(tasks, continuationFunction,
null, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
1051 [__DynamicallyInvokable]
1054 if (continuationFunction ==
null)
1058 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1059 return ContinueWhenAllImpl(tasks, continuationFunction,
null, continuationOptions, cancellationToken, scheduler, ref stackMark);
1064 TaskFactory.CheckMultiTaskContinuationOptions(continuationOptions);
1069 if (scheduler ==
null)
1073 Task<TAntecedentResult>[] tasksCopy = TaskFactory.CheckMultiContinuationTasksAndCopy(tasks);
1076 return CreateCanceledTask(continuationOptions, cancellationToken);
1078 Task<Task<TAntecedentResult>[]> task = TaskFactory.CommonCWAllLogic(tasksCopy);
1079 if (continuationFunction !=
null)
1081 return task.ContinueWith(GenericDelegateCache<TAntecedentResult, TResult>.CWAllFuncDelegate, continuationFunction, scheduler, cancellationToken, continuationOptions, ref stackMark);
1083 return task.ContinueWith(GenericDelegateCache<TAntecedentResult, TResult>.CWAllActionDelegate, continuationAction, scheduler, cancellationToken, continuationOptions, ref stackMark);
1086 internal static Task<TResult> ContinueWhenAllImpl(Task[] tasks, Func<Task[], TResult> continuationFunction,
Action<Task[]> continuationAction,
TaskContinuationOptions continuationOptions, CancellationToken cancellationToken, TaskScheduler scheduler, ref StackCrawlMark stackMark)
1088 TaskFactory.CheckMultiTaskContinuationOptions(continuationOptions);
1091 throw new ArgumentNullException(
"tasks");
1093 if (scheduler ==
null)
1095 throw new ArgumentNullException(
"scheduler");
1097 Task[] tasksCopy = TaskFactory.CheckMultiContinuationTasksAndCopy(tasks);
1100 return CreateCanceledTask(continuationOptions, cancellationToken);
1102 Task<Task[]> task = TaskFactory.CommonCWAllLogic(tasksCopy);
1103 if (continuationFunction !=
null)
1105 return task.ContinueWith(delegate(Task<Task[]> completedTasks,
object state)
1107 completedTasks.NotifyDebuggerOfWaitCompletionIfNecessary();
1108 return ((Func<Task[], TResult>)state)(completedTasks.Result);
1109 }, continuationFunction, scheduler, cancellationToken, continuationOptions, ref stackMark);
1111 return task.ContinueWith(delegate(Task<Task[]> completedTasks,
object state)
1113 completedTasks.NotifyDebuggerOfWaitCompletionIfNecessary();
1114 ((Action<Task[]>)state)(completedTasks.Result);
1115 return default(TResult);
1116 }, continuationAction, scheduler, cancellationToken, continuationOptions, ref stackMark);
1127 [__DynamicallyInvokable]
1130 if (continuationFunction ==
null)
1134 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1135 return ContinueWhenAnyImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
1147 [__DynamicallyInvokable]
1150 if (continuationFunction ==
null)
1154 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1155 return ContinueWhenAnyImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
1168 [__DynamicallyInvokable]
1171 if (continuationFunction ==
null)
1175 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1176 return ContinueWhenAnyImpl(tasks, continuationFunction,
null, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
1191 [__DynamicallyInvokable]
1194 if (continuationFunction ==
null)
1198 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1199 return ContinueWhenAnyImpl(tasks, continuationFunction,
null, continuationOptions, cancellationToken, scheduler, ref stackMark);
1211 [__DynamicallyInvokable]
1214 if (continuationFunction ==
null)
1218 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1219 return ContinueWhenAnyImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
1232 [__DynamicallyInvokable]
1235 if (continuationFunction ==
null)
1239 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1240 return ContinueWhenAnyImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
1254 [__DynamicallyInvokable]
1257 if (continuationFunction ==
null)
1261 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1262 return ContinueWhenAnyImpl(tasks, continuationFunction,
null, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
1278 [__DynamicallyInvokable]
1281 if (continuationFunction ==
null)
1285 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1286 return ContinueWhenAnyImpl(tasks, continuationFunction,
null, continuationOptions, cancellationToken, scheduler, ref stackMark);
1291 TaskFactory.CheckMultiTaskContinuationOptions(continuationOptions);
1296 if (tasks.Length == 0)
1300 if (scheduler ==
null)
1304 Task<Task> task = TaskFactory.CommonCWAnyLogic(tasks);
1307 return CreateCanceledTask(continuationOptions, cancellationToken);
1309 if (continuationFunction !=
null)
1311 return task.ContinueWith((Task<Task> completedTask,
object state) => ((Func<Task, TResult>)state)(completedTask.Result), continuationFunction, scheduler, cancellationToken, continuationOptions, ref stackMark);
1313 return task.ContinueWith(delegate(Task<Task> completedTask,
object state)
1315 ((Action<Task>)state)(completedTask.Result);
1316 return default(TResult);
1317 }, continuationAction, scheduler, cancellationToken, continuationOptions, ref stackMark);
1320 internal static Task<TResult> ContinueWhenAnyImpl<TAntecedentResult>(Task<TAntecedentResult>[] tasks, Func<Task<TAntecedentResult>, TResult> continuationFunction,
Action<Task<TAntecedentResult>> continuationAction,
TaskContinuationOptions continuationOptions, CancellationToken cancellationToken, TaskScheduler scheduler, ref StackCrawlMark stackMark)
1322 TaskFactory.CheckMultiTaskContinuationOptions(continuationOptions);
1325 throw new ArgumentNullException(
"tasks");
1327 if (tasks.Length == 0)
1329 throw new ArgumentException(Environment.GetResourceString(
"Task_MultiTaskContinuation_EmptyTaskList"),
"tasks");
1331 if (scheduler ==
null)
1333 throw new ArgumentNullException(
"scheduler");
1335 Task<Task> task = TaskFactory.CommonCWAnyLogic(tasks);
1338 return CreateCanceledTask(continuationOptions, cancellationToken);
1340 if (continuationFunction !=
null)
1342 return task.ContinueWith(GenericDelegateCache<TAntecedentResult, TResult>.CWAnyFuncDelegate, continuationFunction, scheduler, cancellationToken, continuationOptions, ref stackMark);
1344 return task.ContinueWith(GenericDelegateCache<TAntecedentResult, TResult>.CWAnyActionDelegate, continuationAction, scheduler, cancellationToken, continuationOptions, ref stackMark);
1348 [__DynamicallyInvokable]
1349 [HostProtection(
SecurityAction.LinkDemand, Synchronization =
true, ExternalThreading =
true)]
1350 public class TaskFactory
1352 private sealed
class CompleteOnCountdownPromise : Task<Task[]>, ITaskCompletionAction
1354 private readonly Task[] _tasks;
1358 internal override bool ShouldNotifyDebuggerOfWaitCompletion
1362 if (base.ShouldNotifyDebuggerOfWaitCompletion)
1364 return Task.AnyTaskRequiresNotifyDebuggerOfWaitCompletion(_tasks);
1370 internal CompleteOnCountdownPromise(Task[] tasksCopy)
1373 _count = tasksCopy.Length;
1374 if (AsyncCausalityTracer.LoggingOn)
1376 AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, base.Id,
"TaskFactory.ContinueWhenAll", 0uL);
1378 if (Task.s_asyncDebuggingEnabled)
1380 Task.AddToActiveTasks(
this);
1384 public void Invoke(Task completingTask)
1386 if (AsyncCausalityTracer.LoggingOn)
1388 AsyncCausalityTracer.TraceOperationRelation(CausalityTraceLevel.Important, base.Id, CausalityRelation.Join);
1390 if (completingTask.IsWaitNotificationEnabled)
1392 SetNotificationForWaitCompletion(enabled:
true);
1394 if (Interlocked.Decrement(ref _count) == 0)
1396 if (AsyncCausalityTracer.LoggingOn)
1398 AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, base.Id, AsyncCausalityStatus.Completed);
1400 if (Task.s_asyncDebuggingEnabled)
1402 Task.RemoveFromActiveTasks(base.Id);
1404 TrySetResult(_tasks);
1409 private sealed
class CompleteOnCountdownPromise<
T> : Task<Task<T>[]>, ITaskCompletionAction
1411 private readonly Task<T>[] _tasks;
1415 internal override bool ShouldNotifyDebuggerOfWaitCompletion
1419 if (base.ShouldNotifyDebuggerOfWaitCompletion)
1421 return Task.AnyTaskRequiresNotifyDebuggerOfWaitCompletion(_tasks);
1427 internal CompleteOnCountdownPromise(Task<T>[] tasksCopy)
1430 _count = tasksCopy.Length;
1431 if (AsyncCausalityTracer.LoggingOn)
1433 AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, base.Id,
"TaskFactory.ContinueWhenAll<>", 0uL);
1435 if (Task.s_asyncDebuggingEnabled)
1437 Task.AddToActiveTasks(
this);
1441 public void Invoke(Task completingTask)
1443 if (AsyncCausalityTracer.LoggingOn)
1445 AsyncCausalityTracer.TraceOperationRelation(CausalityTraceLevel.Important, base.Id, CausalityRelation.Join);
1447 if (completingTask.IsWaitNotificationEnabled)
1449 SetNotificationForWaitCompletion(enabled:
true);
1451 if (Interlocked.Decrement(ref _count) == 0)
1453 if (AsyncCausalityTracer.LoggingOn)
1455 AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, base.Id, AsyncCausalityStatus.Completed);
1457 if (Task.s_asyncDebuggingEnabled)
1459 Task.RemoveFromActiveTasks(base.Id);
1461 TrySetResult(_tasks);
1466 internal sealed
class CompleteOnInvokePromise : Task<Task>, ITaskCompletionAction
1470 private int m_firstTaskAlreadyCompleted;
1475 if (AsyncCausalityTracer.LoggingOn)
1477 AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, base.Id,
"TaskFactory.ContinueWhenAny", 0uL);
1479 if (Task.s_asyncDebuggingEnabled)
1481 Task.AddToActiveTasks(
this);
1485 public void Invoke(Task completingTask)
1487 if (Interlocked.CompareExchange(ref m_firstTaskAlreadyCompleted, 1, 0) != 0)
1491 if (AsyncCausalityTracer.LoggingOn)
1493 AsyncCausalityTracer.TraceOperationRelation(CausalityTraceLevel.Important, base.Id, CausalityRelation.Choice);
1494 AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, base.Id, AsyncCausalityStatus.Completed);
1496 if (Task.s_asyncDebuggingEnabled)
1498 Task.RemoveFromActiveTasks(base.Id);
1500 bool flag = TrySetResult(completingTask);
1502 int count = tasks.
Count;
1503 for (
int i = 0; i < count; i++)
1505 Task task = tasks[i];
1506 if (task !=
null && !task.IsCompleted)
1508 task.RemoveContinuation(
this);
1515 private CancellationToken m_defaultCancellationToken;
1517 private TaskScheduler m_defaultScheduler;
1523 private TaskScheduler DefaultScheduler
1527 if (m_defaultScheduler ==
null)
1529 return TaskScheduler.Current;
1531 return m_defaultScheduler;
1537 [__DynamicallyInvokable]
1538 public CancellationToken CancellationToken
1540 [__DynamicallyInvokable]
1543 return m_defaultCancellationToken;
1549 [__DynamicallyInvokable]
1550 public TaskScheduler Scheduler
1552 [__DynamicallyInvokable]
1555 return m_defaultScheduler;
1561 [__DynamicallyInvokable]
1564 [__DynamicallyInvokable]
1567 return m_defaultCreationOptions;
1573 [__DynamicallyInvokable]
1576 [__DynamicallyInvokable]
1579 return m_defaultContinuationOptions;
1583 private TaskScheduler GetDefaultScheduler(Task currTask)
1585 if (m_defaultScheduler !=
null)
1587 return m_defaultScheduler;
1591 return currTask.ExecutingTaskScheduler;
1593 return TaskScheduler.Default;
1597 [__DynamicallyInvokable]
1605 [__DynamicallyInvokable]
1613 [__DynamicallyInvokable]
1623 [__DynamicallyInvokable]
1635 [__DynamicallyInvokable]
1638 CheckMultiTaskContinuationOptions(continuationOptions);
1639 CheckCreationOptions(creationOptions);
1640 m_defaultCancellationToken = cancellationToken;
1641 m_defaultScheduler = scheduler;
1642 m_defaultCreationOptions = creationOptions;
1643 m_defaultContinuationOptions = continuationOptions;
1659 [__DynamicallyInvokable]
1662 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1663 Task internalCurrent =
Task.InternalCurrent;
1664 return Task.InternalStartNew(internalCurrent, action,
null, m_defaultCancellationToken, GetDefaultScheduler(internalCurrent), m_defaultCreationOptions, InternalTaskOptions.None, ref stackMark);
1674 [__DynamicallyInvokable]
1677 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1678 Task internalCurrent =
Task.InternalCurrent;
1679 return Task.InternalStartNew(internalCurrent, action,
null, cancellationToken, GetDefaultScheduler(internalCurrent), m_defaultCreationOptions, InternalTaskOptions.
None, ref stackMark);
1689 [__DynamicallyInvokable]
1692 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1693 Task internalCurrent =
Task.InternalCurrent;
1694 return Task.InternalStartNew(internalCurrent, action,
null, m_defaultCancellationToken, GetDefaultScheduler(internalCurrent), creationOptions, InternalTaskOptions.None, ref stackMark);
1707 [__DynamicallyInvokable]
1710 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1711 return Task.InternalStartNew(
Task.InternalCurrentIfAttached(creationOptions), action,
null, cancellationToken, scheduler, creationOptions, InternalTaskOptions.None, ref stackMark);
1717 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1718 return Task.InternalStartNew(
Task.InternalCurrentIfAttached(creationOptions), action,
null, cancellationToken, scheduler, creationOptions, internalOptions, ref stackMark);
1727 [__DynamicallyInvokable]
1730 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1731 Task internalCurrent =
Task.InternalCurrent;
1732 return Task.InternalStartNew(internalCurrent, action, state, m_defaultCancellationToken, GetDefaultScheduler(internalCurrent), m_defaultCreationOptions, InternalTaskOptions.None, ref stackMark);
1743 [__DynamicallyInvokable]
1746 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1747 Task internalCurrent =
Task.InternalCurrent;
1748 return Task.InternalStartNew(internalCurrent, action, state, cancellationToken, GetDefaultScheduler(internalCurrent), m_defaultCreationOptions, InternalTaskOptions.
None, ref stackMark);
1759 [__DynamicallyInvokable]
1762 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1763 Task internalCurrent =
Task.InternalCurrent;
1764 return Task.InternalStartNew(internalCurrent, action, state, m_defaultCancellationToken, GetDefaultScheduler(internalCurrent), creationOptions, InternalTaskOptions.None, ref stackMark);
1778 [__DynamicallyInvokable]
1781 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1782 return Task.InternalStartNew(
Task.InternalCurrentIfAttached(creationOptions), action, state, cancellationToken, scheduler, creationOptions, InternalTaskOptions.None, ref stackMark);
1791 [__DynamicallyInvokable]
1794 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1795 Task internalCurrent =
Task.InternalCurrent;
1796 return Task<TResult>.StartNew(internalCurrent,
function, m_defaultCancellationToken, m_defaultCreationOptions, InternalTaskOptions.None, GetDefaultScheduler(internalCurrent), ref stackMark);
1807 [__DynamicallyInvokable]
1810 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1811 Task internalCurrent =
Task.InternalCurrent;
1812 return Task<TResult>.StartNew(internalCurrent,
function, cancellationToken, m_defaultCreationOptions, InternalTaskOptions.
None, GetDefaultScheduler(internalCurrent), ref stackMark);
1823 [__DynamicallyInvokable]
1826 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1827 Task internalCurrent =
Task.InternalCurrent;
1828 return Task<TResult>.StartNew(internalCurrent,
function, m_defaultCancellationToken, creationOptions, InternalTaskOptions.None, GetDefaultScheduler(internalCurrent), ref stackMark);
1842 [__DynamicallyInvokable]
1845 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1846 return Task<TResult>.StartNew(
Task.InternalCurrentIfAttached(creationOptions),
function, cancellationToken, creationOptions, InternalTaskOptions.
None, scheduler, ref stackMark);
1856 [__DynamicallyInvokable]
1857 public Task<TResult> StartNew<TResult>(Func<object, TResult>
function,
object state)
1859 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1860 Task internalCurrent =
Task.InternalCurrent;
1861 return Task<TResult>.StartNew(internalCurrent,
function, state, m_defaultCancellationToken, m_defaultCreationOptions, InternalTaskOptions.None, GetDefaultScheduler(internalCurrent), ref stackMark);
1873 [__DynamicallyInvokable]
1876 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1877 Task internalCurrent =
Task.InternalCurrent;
1878 return Task<TResult>.StartNew(internalCurrent,
function, state, cancellationToken, m_defaultCreationOptions, InternalTaskOptions.
None, GetDefaultScheduler(internalCurrent), ref stackMark);
1890 [__DynamicallyInvokable]
1893 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1894 Task internalCurrent =
Task.InternalCurrent;
1895 return Task<TResult>.StartNew(internalCurrent,
function, state, m_defaultCancellationToken, creationOptions, InternalTaskOptions.None, GetDefaultScheduler(internalCurrent), ref stackMark);
1910 [__DynamicallyInvokable]
1913 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1914 return Task<TResult>.StartNew(
Task.InternalCurrentIfAttached(creationOptions),
function, state, cancellationToken, creationOptions, InternalTaskOptions.
None, scheduler, ref stackMark);
1923 [__DynamicallyInvokable]
1926 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1927 return FromAsync(asyncResult, endMethod, m_defaultCreationOptions, DefaultScheduler, ref stackMark);
1938 [__DynamicallyInvokable]
1941 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1942 return FromAsync(asyncResult, endMethod, creationOptions, DefaultScheduler, ref stackMark);
1954 [__DynamicallyInvokable]
1957 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
1958 return FromAsync(asyncResult, endMethod, creationOptions, scheduler, ref stackMark);
1972 [__DynamicallyInvokable]
1973 public Task FromAsync(Func<AsyncCallback, object, IAsyncResult> beginMethod, Action<IAsyncResult> endMethod,
object state)
1975 return FromAsync(beginMethod, endMethod, state, m_defaultCreationOptions);
1986 [__DynamicallyInvokable]
2000 [__DynamicallyInvokable]
2001 public Task FromAsync<TArg1>(Func<TArg1, AsyncCallback, object, IAsyncResult> beginMethod, Action<IAsyncResult> endMethod, TArg1 arg1,
object state)
2003 return FromAsync(beginMethod, endMethod, arg1, state, m_defaultCreationOptions);
2016 [__DynamicallyInvokable]
2017 public Task FromAsync<TArg1>(Func<TArg1, AsyncCallback, object, IAsyncResult> beginMethod, Action<IAsyncResult> endMethod, TArg1 arg1,
object state,
TaskCreationOptions creationOptions)
2032 [__DynamicallyInvokable]
2033 public Task FromAsync<TArg1, TArg2>(Func<TArg1, TArg2, AsyncCallback, object, IAsyncResult> beginMethod, Action<IAsyncResult> endMethod, TArg1 arg1, TArg2 arg2,
object state)
2035 return FromAsync(beginMethod, endMethod, arg1, arg2, state, m_defaultCreationOptions);
2050 [__DynamicallyInvokable]
2051 public Task FromAsync<TArg1, TArg2>(Func<TArg1, TArg2, AsyncCallback, object, IAsyncResult> beginMethod, Action<IAsyncResult> endMethod, TArg1 arg1, TArg2 arg2,
object state,
TaskCreationOptions creationOptions)
2068 [__DynamicallyInvokable]
2069 public Task FromAsync<TArg1, TArg2, TArg3>(Func<TArg1, TArg2, TArg3, AsyncCallback, object, IAsyncResult> beginMethod, Action<IAsyncResult> endMethod, TArg1 arg1, TArg2 arg2, TArg3 arg3,
object state)
2071 return FromAsync(beginMethod, endMethod, arg1, arg2, arg3, state, m_defaultCreationOptions);
2088 [__DynamicallyInvokable]
2089 public Task FromAsync<TArg1, TArg2, TArg3>(Func<TArg1, TArg2, TArg3, AsyncCallback, object, IAsyncResult> beginMethod, Action<IAsyncResult> endMethod, TArg1 arg1, TArg2 arg2, TArg3 arg3,
object state,
TaskCreationOptions creationOptions)
2101 [__DynamicallyInvokable]
2104 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2105 return TaskFactory<TResult>.FromAsyncImpl(asyncResult, endMethod,
null, m_defaultCreationOptions, DefaultScheduler, ref stackMark);
2117 [__DynamicallyInvokable]
2120 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2121 return TaskFactory<TResult>.FromAsyncImpl(asyncResult, endMethod,
null, creationOptions, DefaultScheduler, ref stackMark);
2134 [__DynamicallyInvokable]
2137 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2138 return TaskFactory<TResult>.FromAsyncImpl(asyncResult, endMethod,
null, creationOptions, scheduler, ref stackMark);
2148 [__DynamicallyInvokable]
2149 public Task<TResult> FromAsync<TResult>(Func<AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod,
object state)
2151 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod,
null, state, m_defaultCreationOptions);
2163 [__DynamicallyInvokable]
2164 public Task<TResult> FromAsync<TResult>(Func<AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod,
object state,
TaskCreationOptions creationOptions)
2166 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod,
null, state, creationOptions);
2178 [__DynamicallyInvokable]
2179 public Task<TResult> FromAsync<TArg1, TResult>(Func<TArg1, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1,
object state)
2181 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod,
null, arg1, state, m_defaultCreationOptions);
2195 [__DynamicallyInvokable]
2196 public Task<TResult> FromAsync<TArg1, TResult>(Func<TArg1, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1,
object state,
TaskCreationOptions creationOptions)
2198 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod,
null, arg1, state, creationOptions);
2212 [__DynamicallyInvokable]
2213 public Task<TResult> FromAsync<TArg1, TArg2, TResult>(Func<TArg1, TArg2, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1, TArg2 arg2,
object state)
2215 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod,
null, arg1, arg2, state, m_defaultCreationOptions);
2231 [__DynamicallyInvokable]
2232 public Task<TResult> FromAsync<TArg1, TArg2, TResult>(Func<TArg1, TArg2, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1, TArg2 arg2,
object state,
TaskCreationOptions creationOptions)
2234 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod,
null, arg1, arg2, state, creationOptions);
2250 [__DynamicallyInvokable]
2251 public Task<TResult> FromAsync<TArg1, TArg2, TArg3, TResult>(Func<TArg1, TArg2, TArg3, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1, TArg2 arg2, TArg3 arg3,
object state)
2253 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod,
null, arg1, arg2, arg3, state, m_defaultCreationOptions);
2271 [__DynamicallyInvokable]
2272 public Task<TResult> FromAsync<TArg1, TArg2, TArg3, TResult>(Func<TArg1, TArg2, TArg3, AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, TArg1 arg1, TArg2 arg2, TArg3 arg3,
object state,
TaskCreationOptions creationOptions)
2274 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod,
null, arg1, arg2, arg3, state, creationOptions);
2277 internal static void CheckFromAsyncOptions(
TaskCreationOptions creationOptions,
bool hasBeginMethod)
2285 if ((creationOptions & TaskCreationOptions.PreferFairness) != 0)
2290 if ((creationOptions & ~(TaskCreationOptions.PreferFairness | TaskCreationOptions.LongRunning | TaskCreationOptions.AttachedToParent | TaskCreationOptions.DenyChildAttach | TaskCreationOptions.HideScheduler)) != 0)
2292 throw new ArgumentOutOfRangeException(
"creationOptions");
2296 internal static Task<Task[]> CommonCWAllLogic(Task[] tasksCopy)
2298 CompleteOnCountdownPromise completeOnCountdownPromise =
new CompleteOnCountdownPromise(tasksCopy);
2299 for (
int i = 0; i < tasksCopy.Length; i++)
2301 if (tasksCopy[i].IsCompleted)
2303 completeOnCountdownPromise.Invoke(tasksCopy[i]);
2307 tasksCopy[i].AddCompletionAction(completeOnCountdownPromise);
2310 return completeOnCountdownPromise;
2313 internal static Task<Task<T>[]> CommonCWAllLogic<T>(Task<T>[] tasksCopy)
2315 CompleteOnCountdownPromise<T> completeOnCountdownPromise =
new CompleteOnCountdownPromise<T>(tasksCopy);
2316 for (
int i = 0; i < tasksCopy.Length; i++)
2318 if (tasksCopy[i].IsCompleted)
2320 completeOnCountdownPromise.Invoke(tasksCopy[i]);
2324 tasksCopy[i].AddCompletionAction(completeOnCountdownPromise);
2327 return completeOnCountdownPromise;
2338 [__DynamicallyInvokable]
2341 if (continuationAction ==
null)
2345 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2346 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks,
null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2358 [__DynamicallyInvokable]
2361 if (continuationAction ==
null)
2365 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2366 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks,
null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
2379 [__DynamicallyInvokable]
2382 if (continuationAction ==
null)
2386 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2387 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks,
null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2400 [__DynamicallyInvokable]
2403 if (continuationAction ==
null)
2407 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2408 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks,
null, continuationAction, continuationOptions, cancellationToken, scheduler, ref stackMark);
2420 [__DynamicallyInvokable]
2423 if (continuationAction ==
null)
2427 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2428 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks,
null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2441 [__DynamicallyInvokable]
2444 if (continuationAction ==
null)
2448 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2449 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks,
null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
2463 [__DynamicallyInvokable]
2466 if (continuationAction ==
null)
2470 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2471 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks,
null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2485 [__DynamicallyInvokable]
2488 if (continuationAction ==
null)
2492 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2493 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks,
null, continuationAction, continuationOptions, cancellationToken, scheduler, ref stackMark);
2505 [__DynamicallyInvokable]
2508 if (continuationFunction ==
null)
2512 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2513 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2526 [__DynamicallyInvokable]
2529 if (continuationFunction ==
null)
2533 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2534 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
2548 [__DynamicallyInvokable]
2551 if (continuationFunction ==
null)
2555 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2556 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction,
null, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2570 [__DynamicallyInvokable]
2573 if (continuationFunction ==
null)
2577 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2578 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction,
null, continuationOptions, cancellationToken, scheduler, ref stackMark);
2591 [__DynamicallyInvokable]
2594 if (continuationFunction ==
null)
2598 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2599 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2613 [__DynamicallyInvokable]
2616 if (continuationFunction ==
null)
2620 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2621 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
2636 [__DynamicallyInvokable]
2639 if (continuationFunction ==
null)
2643 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2644 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction,
null, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2661 [__DynamicallyInvokable]
2664 if (continuationFunction ==
null)
2668 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2669 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction,
null, continuationOptions, cancellationToken, scheduler, ref stackMark);
2674 CompleteOnInvokePromise completeOnInvokePromise =
new CompleteOnInvokePromise(tasks);
2676 int count = tasks.
Count;
2677 for (
int i = 0; i < count; i++)
2679 Task task = tasks[i];
2688 if (completeOnInvokePromise.IsCompleted)
2695 completeOnInvokePromise.Invoke(task);
2699 task.AddCompletionAction(completeOnInvokePromise);
2700 if (completeOnInvokePromise.IsCompleted)
2702 task.RemoveContinuation(completeOnInvokePromise);
2705 return completeOnInvokePromise;
2716 [__DynamicallyInvokable]
2719 if (continuationAction ==
null)
2723 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2724 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks,
null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2737 [__DynamicallyInvokable]
2740 if (continuationAction ==
null)
2744 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2745 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks,
null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
2758 [__DynamicallyInvokable]
2761 if (continuationAction ==
null)
2765 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2766 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks,
null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2779 [__DynamicallyInvokable]
2782 if (continuationAction ==
null)
2786 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2787 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks,
null, continuationAction, continuationOptions, cancellationToken, scheduler, ref stackMark);
2799 [__DynamicallyInvokable]
2800 public Task<TResult> ContinueWhenAny<TResult>(
Task[] tasks, Func<Task, TResult> continuationFunction)
2802 if (continuationFunction ==
null)
2806 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2807 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2820 [__DynamicallyInvokable]
2823 if (continuationFunction ==
null)
2827 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2828 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
2842 [__DynamicallyInvokable]
2845 if (continuationFunction ==
null)
2849 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2850 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction,
null, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2864 [__DynamicallyInvokable]
2867 if (continuationFunction ==
null)
2871 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2872 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction,
null, continuationOptions, cancellationToken, scheduler, ref stackMark);
2885 [__DynamicallyInvokable]
2888 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2889 if (continuationFunction ==
null)
2893 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2907 [__DynamicallyInvokable]
2910 if (continuationFunction ==
null)
2914 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2915 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction,
null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
2930 [__DynamicallyInvokable]
2933 if (continuationFunction ==
null)
2937 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2938 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction,
null, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2953 [__DynamicallyInvokable]
2956 if (continuationFunction ==
null)
2960 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2961 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction,
null, continuationOptions, cancellationToken, scheduler, ref stackMark);
2973 [__DynamicallyInvokable]
2976 if (continuationAction ==
null)
2980 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
2981 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks,
null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
2994 [__DynamicallyInvokable]
2997 if (continuationAction ==
null)
3001 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
3002 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks,
null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler, ref stackMark);
3016 [__DynamicallyInvokable]
3019 if (continuationAction ==
null)
3023 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
3024 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks,
null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler, ref stackMark);
3038 [__DynamicallyInvokable]
3041 if (continuationAction ==
null)
3045 StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
3046 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks,
null, continuationAction, continuationOptions, cancellationToken, scheduler, ref stackMark);
3049 internal static Task[] CheckMultiContinuationTasksAndCopy(
Task[] tasks)
3055 if (tasks.Length == 0)
3059 Task[] array =
new Task[tasks.Length];
3060 for (
int i = 0; i < tasks.Length; i++)
3062 array[i] = tasks[i];
3063 if (array[i] ==
null)
3071 internal static Task<TResult>[] CheckMultiContinuationTasksAndCopy<TResult>(Task<TResult>[] tasks)
3075 throw new ArgumentNullException(
"tasks");
3077 if (tasks.Length == 0)
3079 throw new ArgumentException(Environment.GetResourceString(
"Task_MultiTaskContinuation_EmptyTaskList"),
"tasks");
3081 Task<TResult>[] array =
new Task<TResult>[tasks.Length];
3082 for (
int i = 0; i < tasks.Length; i++)
3084 array[i] = tasks[i];
3085 if (array[i] ==
null)
3087 throw new ArgumentException(Environment.GetResourceString(
"Task_MultiTaskContinuation_NullTask"),
"tasks");
3093 internal static void CheckMultiTaskContinuationOptions(TaskContinuationOptions continuationOptions)
3097 throw new ArgumentOutOfRangeException(
"continuationOptions", Environment.GetResourceString(
"Task_ContinueWith_ESandLR"));
3101 throw new ArgumentOutOfRangeException(
"continuationOptions");
3105 throw new ArgumentOutOfRangeException(
"continuationOptions", Environment.GetResourceString(
"Task_MultiTaskContinuation_FireOptions"));
Task< TResult > ContinueWhenAll(Task[] tasks, Func< Task[], TResult > continuationFunction, TaskContinuationOptions continuationOptions)
Creates a continuation task that will be started upon the completion of a set of provided Tasks.
static TaskScheduler?? Current
Gets the T:System.Threading.Tasks.TaskScheduler associated with the currently executing task.
The exception that is thrown when a null reference (Nothing in Visual Basic) is passed to a method th...
Propagates notification that operations should be canceled.
TaskCreationOptions CreationOptions
Gets the T:System.Threading.Tasks.TaskCreationOptions enumeration value for this task factory.
TaskScheduler Scheduler
Gets the task scheduler for this task factory.
TaskFactory(TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions)
Initializes a T:System.Threading.Tasks.TaskFactory`1 instance with the specified configuration.
Task< TResult > ContinueWhenAny(Task[] tasks, Func< Task, TResult > continuationFunction, CancellationToken cancellationToken)
Creates a continuation task that will be started upon the completion of any task in the provided set.
Task ContinueWhenAny(Task[] tasks, Action< Task > continuationAction, CancellationToken cancellationToken)
Creates a continuation T:System.Threading.Tasks.Task that will be started upon the completion of any ...
Task< TResult > StartNew(Func< TResult > function, CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Creates and starts a task.
Task ContinueWhenAny(Task[] tasks, Action< Task > continuationAction)
Creates a continuation T:System.Threading.Tasks.Task that will be started upon the completion of any ...
Task< TResult > ContinueWhenAny(Task[] tasks, Func< Task, TResult > continuationFunction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
Creates a continuation task that will be started upon the completion of any task in the provided set.
Task FromAsync(Func< AsyncCallback, object, IAsyncResult > beginMethod, Action< IAsyncResult > endMethod, object state)
Creates a T:System.Threading.Tasks.Task that represents a pair of begin and end methods that conform ...
No initialization action.
TaskFactory(CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
Initializes a T:System.Threading.Tasks.TaskFactory`1 instance with the specified configuration.
TaskContinuationOptions ContinuationOptions
Gets the T:System.Threading.Tasks.TaskContinuationOptions enumeration value for this task factory.
Task ContinueWhenAll(Task[] tasks, Action< Task[]> continuationAction, TaskContinuationOptions continuationOptions)
Creates a continuation task that starts when a set of specified tasks has completed.
Represents an object that handles the low-level work of queuing tasks onto threads.
TaskContinuationOptions
Specifies the behavior for a task that is created by using the M:System.Threading....
The exception that is thrown when the value of an argument is outside the allowable range of values a...
Task< TResult > StartNew(Func< object, TResult > function, object state, CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Creates and starts a task.
delegate void AsyncCallback(IAsyncResult ar)
References a method to be called when a corresponding asynchronous operation completes.
Task FromAsync(IAsyncResult asyncResult, Action< IAsyncResult > endMethod)
Creates a T:System.Threading.Tasks.Task that executes an end method action when a specified T:System....
Task< TResult > StartNew(Func< TResult > function, TaskCreationOptions creationOptions)
Creates and starts a task.
Task StartNew(Action action, TaskCreationOptions creationOptions)
Creates and starts a T:System.Threading.Tasks.Task.
object AsyncState
Gets a user-defined object that qualifies or contains information about an asynchronous operation.
Task< TResult > ContinueWhenAll(Task[] tasks, Func< Task[], TResult > continuationFunction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
Creates a continuation task that will be started upon the completion of a set of provided Tasks.
Task ContinueWhenAny(Task[] tasks, Action< Task > continuationAction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
Creates a continuation T:System.Threading.Tasks.Task that will be started upon the completion of any ...
delegate void Action()
Encapsulates a method that has no parameters and does not return a value.
bool IsCancellationRequested
Gets whether cancellation has been requested for this token.
TaskCreationOptions
Specifies flags that control optional behavior for the creation and execution of tasks.
Task StartNew(Action action, CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Creates and starts a T:System.Threading.Tasks.Task.
TaskFactory(TaskScheduler scheduler)
Initializes a T:System.Threading.Tasks.TaskFactory`1 instance with the specified configuration.
Task< TResult > StartNew(Func< object, TResult > function, object state, TaskCreationOptions creationOptions)
Creates and starts a task.
Task ContinueWhenAll(Task[] tasks, Action< Task[]> continuationAction)
Creates a continuation task that starts when a set of specified tasks has completed.
static TaskScheduler Default
Gets the default T:System.Threading.Tasks.TaskScheduler instance that is provided by the ....
SecurityAction
Specifies the security actions that can be performed using declarative security.
Provides information about, and means to manipulate, the current environment and platform....
Represents the status of an asynchronous operation.
Task< TResult > FromAsync(IAsyncResult asyncResult, Func< IAsyncResult, TResult > endMethod, TaskCreationOptions creationOptions)
Creates a task that executes an end method function when a specified T:System.IAsyncResult completes.
Task< TResult > StartNew(Func< TResult > function)
Creates and starts a task.
TaskFactory(CancellationToken cancellationToken)
Initializes a T:System.Threading.Tasks.TaskFactory`1 instance with the default configuration.
bool IsCompleted
Gets whether this T:System.Threading.Tasks.Task has completed.
Task< TResult > ContinueWhenAny(Task[] tasks, Func< Task, TResult > continuationFunction)
Creates a continuation task that will be started upon the completion of any task in the provided set.
CancellationToken CancellationToken
Gets a token associated with the operation that was canceled.
TaskCreationOptions CreationOptions
Gets the T:System.Threading.Tasks.TaskCreationOptions used to create this task.
Task< TResult > ContinueWhenAny(Task[] tasks, Func< Task, TResult > continuationFunction, TaskContinuationOptions continuationOptions)
Creates a continuation task that will be started upon the completion of any task in the provided set.
Task StartNew(Action action, CancellationToken cancellationToken)
Creates and starts a T:System.Threading.Tasks.Task.
Task FromAsync(IAsyncResult asyncResult, Action< IAsyncResult > endMethod, TaskCreationOptions creationOptions)
Creates a T:System.Threading.Tasks.Task that executes an end method action when a specified T:System....
MethodImplOptions
Defines the details of how a method is implemented.
Task StartNew(Action< object > action, object state, CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Creates and starts a T:System.Threading.Tasks.Task.
bool CompletedSynchronously
Gets a value that indicates whether the asynchronous operation completed synchronously.
Task FromAsync(IAsyncResult asyncResult, Action< IAsyncResult > endMethod, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Creates a T:System.Threading.Tasks.Task that executes an end method action when a specified T:System....
static CancellationToken None
Returns an empty T:System.Threading.CancellationToken value.
int Id
Gets an ID for this T:System.Threading.Tasks.Task instance.
Represents a collection of objects that can be individually accessed by index.
Task FromAsync(Func< AsyncCallback, object, IAsyncResult > beginMethod, Action< IAsyncResult > endMethod, object state, TaskCreationOptions creationOptions)
Creates a T:System.Threading.Tasks.Task that represents a pair of begin and end methods that conform ...
The exception that is thrown when one of the arguments provided to a method is not valid.
An operation that invokes a delegate or lambda expression, such as sampleDelegate....
WaitHandle AsyncWaitHandle
Gets a T:System.Threading.WaitHandle that is used to wait for an asynchronous operation to complete.
int Count
Gets the number of elements contained in the T:System.Collections.Generic.ICollection`1.
Task StartNew(Action< object > action, object state, TaskCreationOptions creationOptions)
Creates and starts a T:System.Threading.Tasks.Task.
Task< TResult > StartNew(Func< object, TResult > function, object state)
Creates and starts a task.
The exception that is thrown in a thread upon cancellation of an operation that the thread was execut...
TaskFactory()
Initializes a T:System.Threading.Tasks.TaskFactory`1 instance with the default configuration.
Represents errors that occur during application execution.To browse the .NET Framework source code fo...
Task< TResult > FromAsync(IAsyncResult asyncResult, Func< IAsyncResult, TResult > endMethod)
Creates a task that executes an end method function when a specified T:System.IAsyncResult completes.
Task< TResult > ContinueWhenAll(Task[] tasks, Func< Task[], TResult > continuationFunction)
Creates a continuation task that will be started upon the completion of a set of provided tasks.
Task StartNew(Action< object > action, object state, CancellationToken cancellationToken)
Creates and starts a T:System.Threading.Tasks.Task.
Task< TResult > StartNew(Func< TResult > function, CancellationToken cancellationToken)
Creates and starts a task.
Task< TResult > FromAsync(Func< AsyncCallback, object, IAsyncResult > beginMethod, Func< IAsyncResult, TResult > endMethod, object state, TaskCreationOptions creationOptions)
Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Progr...
Task ContinueWhenAll(Task[] tasks, Action< Task[]> continuationAction, CancellationToken cancellationToken)
Creates a continuation task that starts when a set of specified tasks has completed.
CancellationToken CancellationToken
Gets the default cancellation token for this task factory.
Task ContinueWhenAll(Task[] tasks, Action< Task[]> continuationAction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
Creates a continuation task that starts when a set of specified tasks has completed.
bool IsCompleted
Gets a value that indicates whether the asynchronous operation has completed.
Provides support for creating and scheduling T:System.Threading.Tasks.Task`1 objects.
Task ContinueWhenAny(Task[] tasks, Action< Task > continuationAction, TaskContinuationOptions continuationOptions)
Creates a continuation T:System.Threading.Tasks.Task that will be started upon the completion of any ...
Task StartNew(Action action)
Creates and starts a task.
Task< TResult > ContinueWhenAll(Task[] tasks, Func< Task[], TResult > continuationFunction, CancellationToken cancellationToken)
Creates a continuation task that will be started upon the completion of a set of provided tasks.
Task< TResult > FromAsync(IAsyncResult asyncResult, Func< IAsyncResult, TResult > endMethod, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Creates a task that executes an end method function when a specified T:System.IAsyncResult completes.
Task StartNew(Action< object > action, object state)
Creates and starts a T:System.Threading.Tasks.Task.
Task< TResult > FromAsync(Func< AsyncCallback, object, IAsyncResult > beginMethod, Func< IAsyncResult, TResult > endMethod, object state)
Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Progr...
Represents an asynchronous operation that can return a value.
Task< TResult > StartNew(Func< object, TResult > function, object state, CancellationToken cancellationToken)
Creates and starts a task.