Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
TaskFactory.cs
Go to the documentation of this file.
2
4
5public class TaskFactory<TResult>
6{
7 private sealed class FromAsyncTrimPromise<TInstance> : Task<TResult> where TInstance : class
8 {
9 internal static readonly AsyncCallback s_completeFromAsyncResult = CompleteFromAsyncResult;
10
11 private TInstance m_thisRef;
12
14
20
22 {
23 if (asyncResult == null)
24 {
26 }
28 if (fromAsyncTrimPromise == null)
29 {
30 ThrowHelper.ThrowArgumentException(ExceptionResource.InvalidOperation_WrongAsyncResultOrEndCalledMultiple, ExceptionArgument.asyncResult);
31 }
32 TInstance thisRef = fromAsyncTrimPromise.m_thisRef;
34 fromAsyncTrimPromise.m_thisRef = null;
35 fromAsyncTrimPromise.m_endMethod = null;
36 if (endMethod == null)
37 {
38 ThrowHelper.ThrowArgumentException(ExceptionResource.InvalidOperation_WrongAsyncResultOrEndCalledMultiple, ExceptionArgument.asyncResult);
39 }
40 if (!asyncResult.CompletedSynchronously)
41 {
43 }
44 }
45
47 {
48 try
49 {
51 bool flag;
53 {
54 flag = TrySetResult(result);
55 return;
56 }
57 DangerousSetResult(result);
58 flag = true;
59 }
61 {
62 bool flag = TrySetCanceled(ex.CancellationToken, ex);
63 }
65 {
67 }
68 }
69 }
70
72
74
76
78
80
82
84
86
88
90 {
91 if (m_defaultScheduler != null)
92 {
93 return m_defaultScheduler;
94 }
95 if (currTask != null && (currTask.CreationOptions & TaskCreationOptions.HideScheduler) == 0)
96 {
97 return currTask.ExecutingTaskScheduler;
98 }
100 }
101
102 public TaskFactory()
103 {
104 }
105
110
115
123
130
136
142
148
153
159
165
171
176
178 {
179 Exception ex = null;
181 TResult result = default(TResult);
182 try
183 {
184 if (endFunction != null)
185 {
186 result = endFunction(iar);
187 }
188 else
189 {
190 endAction(iar);
191 }
192 }
194 {
195 ex2 = ex3;
196 }
197 catch (Exception ex4)
198 {
199 ex = ex4;
200 }
201 finally
202 {
203 if (ex2 != null)
204 {
205 promise.TrySetCanceled(ex2.CancellationToken, ex2);
206 }
207 else if (ex != null)
208 {
209 promise.TrySetException(ex);
210 }
211 else
212 {
213 if (TplEventSource.Log.IsEnabled())
214 {
215 TplEventSource.Log.TraceOperationEnd(promise.Id, AsyncCausalityStatus.Completed);
216 }
218 {
220 }
222 {
223 promise.TrySetResult(result);
224 }
225 else
226 {
227 promise.DangerousSetResult(result);
228 }
229 }
230 }
231 }
232
237
242
247
249 {
250 if (asyncResult == null)
251 {
253 }
254 if (endFunction == null && endAction == null)
255 {
257 }
258 if (scheduler == null)
259 {
261 }
264 if (TplEventSource.Log.IsEnabled())
265 {
266 TplEventSource.Log.TraceOperationBegin(promise.Id, "TaskFactory.FromAsync", 0L);
267 }
269 {
271 }
273 {
275 }, null, null, default(CancellationToken), TaskCreationOptions.None, InternalTaskOptions.None, null);
276 if (TplEventSource.Log.IsEnabled())
277 {
278 TplEventSource.Log.TraceOperationBegin(t.Id, "TaskFactory.FromAsync Callback", 0L);
279 }
281 {
283 }
284 if (asyncResult.IsCompleted)
285 {
286 try
287 {
289 }
291 {
292 promise.TrySetException(exceptionObject);
293 }
294 }
295 else
296 {
298 {
299 try
300 {
302 }
304 {
305 promise.TrySetException(exceptionObject2);
306 }
307 }, null, -1, executeOnlyOnce: true);
308 }
309 return promise;
310 }
311
313 {
314 return FromAsyncImpl(beginMethod, endMethod, null, state, m_defaultCreationOptions);
315 }
316
318 {
319 return FromAsyncImpl(beginMethod, endMethod, null, state, creationOptions);
320 }
321
323 {
324 if (beginMethod == null)
325 {
327 }
328 if (endFunction == null && endAction == null)
329 {
331 }
334 if (TplEventSource.Log.IsEnabled())
335 {
336 TplEventSource.Log.TraceOperationBegin(promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0L);
337 }
339 {
341 }
342 try
343 {
345 {
346 if (!iar.CompletedSynchronously)
347 {
348 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization: true);
349 }
350 }, state);
351 if (asyncResult.CompletedSynchronously)
352 {
353 FromAsyncCoreLogic(asyncResult, endFunction, endAction, promise, requiresSynchronization: false);
354 }
355 }
356 catch
357 {
358 if (TplEventSource.Log.IsEnabled())
359 {
360 TplEventSource.Log.TraceOperationEnd(promise.Id, AsyncCausalityStatus.Error);
361 }
363 {
365 }
366 promise.TrySetResult();
367 throw;
368 }
369 return promise;
370 }
371
373 {
374 return FromAsyncImpl(beginMethod, endMethod, null, arg1, state, m_defaultCreationOptions);
375 }
376
378 {
379 return FromAsyncImpl(beginMethod, endMethod, null, arg1, state, creationOptions);
380 }
381
383 {
384 if (beginMethod == null)
385 {
387 }
388 if (endFunction == null && endAction == null)
389 {
391 }
394 if (TplEventSource.Log.IsEnabled())
395 {
396 TplEventSource.Log.TraceOperationBegin(promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0L);
397 }
399 {
401 }
402 try
403 {
405 {
406 if (!iar.CompletedSynchronously)
407 {
408 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization: true);
409 }
410 }, state);
411 if (asyncResult.CompletedSynchronously)
412 {
413 FromAsyncCoreLogic(asyncResult, endFunction, endAction, promise, requiresSynchronization: false);
414 }
415 }
416 catch
417 {
418 if (TplEventSource.Log.IsEnabled())
419 {
420 TplEventSource.Log.TraceOperationEnd(promise.Id, AsyncCausalityStatus.Error);
421 }
423 {
425 }
426 promise.TrySetResult();
427 throw;
428 }
429 return promise;
430 }
431
433 {
434 return FromAsyncImpl(beginMethod, endMethod, null, arg1, arg2, state, m_defaultCreationOptions);
435 }
436
438 {
439 return FromAsyncImpl(beginMethod, endMethod, null, arg1, arg2, state, creationOptions);
440 }
441
443 {
444 if (beginMethod == null)
445 {
447 }
448 if (endFunction == null && endAction == null)
449 {
451 }
454 if (TplEventSource.Log.IsEnabled())
455 {
456 TplEventSource.Log.TraceOperationBegin(promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0L);
457 }
459 {
461 }
462 try
463 {
465 {
466 if (!iar.CompletedSynchronously)
467 {
468 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization: true);
469 }
470 }, state);
471 if (asyncResult.CompletedSynchronously)
472 {
473 FromAsyncCoreLogic(asyncResult, endFunction, endAction, promise, requiresSynchronization: false);
474 }
475 }
476 catch
477 {
478 if (TplEventSource.Log.IsEnabled())
479 {
480 TplEventSource.Log.TraceOperationEnd(promise.Id, AsyncCausalityStatus.Error);
481 }
483 {
485 }
486 promise.TrySetResult();
487 throw;
488 }
489 return promise;
490 }
491
493 {
494 return FromAsyncImpl(beginMethod, endMethod, null, arg1, arg2, arg3, state, m_defaultCreationOptions);
495 }
496
498 {
499 return FromAsyncImpl(beginMethod, endMethod, null, arg1, arg2, arg3, state, creationOptions);
500 }
501
503 {
504 if (beginMethod == null)
505 {
507 }
508 if (endFunction == null && endAction == null)
509 {
511 }
514 if (TplEventSource.Log.IsEnabled())
515 {
516 TplEventSource.Log.TraceOperationBegin(promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0L);
517 }
519 {
521 }
522 try
523 {
525 {
526 if (!iar.CompletedSynchronously)
527 {
528 FromAsyncCoreLogic(iar, endFunction, endAction, promise, requiresSynchronization: true);
529 }
530 }, state);
531 if (asyncResult.CompletedSynchronously)
532 {
533 FromAsyncCoreLogic(asyncResult, endFunction, endAction, promise, requiresSynchronization: false);
534 }
535 }
536 catch
537 {
538 if (TplEventSource.Log.IsEnabled())
539 {
540 TplEventSource.Log.TraceOperationEnd(promise.Id, AsyncCausalityStatus.Error);
541 }
543 {
545 }
546 promise.TrySetResult();
547 throw;
548 }
549 return promise;
550 }
551
562
568
569 public Task<TResult> ContinueWhenAll(Task[] tasks, Func<Task[], TResult> continuationFunction)
570 {
571 if (continuationFunction == null)
572 {
574 }
575 return ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
576 }
577
578 public Task<TResult> ContinueWhenAll(Task[] tasks, Func<Task[], TResult> continuationFunction, CancellationToken cancellationToken)
579 {
580 if (continuationFunction == null)
581 {
583 }
584 return ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
585 }
586
587 public Task<TResult> ContinueWhenAll(Task[] tasks, Func<Task[], TResult> continuationFunction, TaskContinuationOptions continuationOptions)
588 {
589 if (continuationFunction == null)
590 {
592 }
593 return ContinueWhenAllImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
594 }
595
596 public Task<TResult> ContinueWhenAll(Task[] tasks, Func<Task[], TResult> continuationFunction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
597 {
598 if (continuationFunction == null)
599 {
601 }
602 return ContinueWhenAllImpl(tasks, continuationFunction, null, continuationOptions, cancellationToken, scheduler);
603 }
604
606 {
607 if (continuationFunction == null)
608 {
610 }
611 return ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
612 }
613
615 {
616 if (continuationFunction == null)
617 {
619 }
620 return ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
621 }
622
624 {
625 if (continuationFunction == null)
626 {
628 }
629 return ContinueWhenAllImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
630 }
631
632 public Task<TResult> ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[] tasks, Func<Task<TAntecedentResult>[], TResult> continuationFunction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
633 {
634 if (continuationFunction == null)
635 {
637 }
638 return ContinueWhenAllImpl(tasks, continuationFunction, null, continuationOptions, cancellationToken, scheduler);
639 }
640
664
665 internal static Task<TResult> ContinueWhenAllImpl(Task[] tasks, Func<Task[], TResult> continuationFunction, Action<Task[]> continuationAction, TaskContinuationOptions continuationOptions, CancellationToken cancellationToken, TaskScheduler scheduler)
666 {
668 if (tasks == null)
669 {
671 }
672 if (scheduler == null)
673 {
675 }
677 if (cancellationToken.IsCancellationRequested && (continuationOptions & TaskContinuationOptions.LazyCancellation) == 0)
678 {
679 return CreateCanceledTask(continuationOptions, cancellationToken);
680 }
682 if (continuationFunction != null)
683 {
684 return task.ContinueWith(delegate(Task<Task[]> completedTasks, object state)
685 {
686 completedTasks.NotifyDebuggerOfWaitCompletionIfNecessary();
687 return ((Func<Task[], TResult>)state)(completedTasks.Result);
689 }
690 return task.ContinueWith(delegate(Task<Task[]> completedTasks, object state)
691 {
692 completedTasks.NotifyDebuggerOfWaitCompletionIfNecessary();
694 return default(TResult);
696 }
697
698 public Task<TResult> ContinueWhenAny(Task[] tasks, Func<Task, TResult> continuationFunction)
699 {
700 if (continuationFunction == null)
701 {
703 }
704 return ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
705 }
706
707 public Task<TResult> ContinueWhenAny(Task[] tasks, Func<Task, TResult> continuationFunction, CancellationToken cancellationToken)
708 {
709 if (continuationFunction == null)
710 {
712 }
713 return ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
714 }
715
716 public Task<TResult> ContinueWhenAny(Task[] tasks, Func<Task, TResult> continuationFunction, TaskContinuationOptions continuationOptions)
717 {
718 if (continuationFunction == null)
719 {
721 }
722 return ContinueWhenAnyImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
723 }
724
725 public Task<TResult> ContinueWhenAny(Task[] tasks, Func<Task, TResult> continuationFunction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
726 {
727 if (continuationFunction == null)
728 {
730 }
731 return ContinueWhenAnyImpl(tasks, continuationFunction, null, continuationOptions, cancellationToken, scheduler);
732 }
733
735 {
736 if (continuationFunction == null)
737 {
739 }
740 return ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
741 }
742
744 {
745 if (continuationFunction == null)
746 {
748 }
749 return ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
750 }
751
753 {
754 if (continuationFunction == null)
755 {
757 }
758 return ContinueWhenAnyImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
759 }
760
762 {
763 if (continuationFunction == null)
764 {
766 }
767 return ContinueWhenAnyImpl(tasks, continuationFunction, null, continuationOptions, cancellationToken, scheduler);
768 }
769
770 internal static Task<TResult> ContinueWhenAnyImpl(Task[] tasks, Func<Task, TResult> continuationFunction, Action<Task> continuationAction, TaskContinuationOptions continuationOptions, CancellationToken cancellationToken, TaskScheduler scheduler)
771 {
773 if (tasks == null)
774 {
776 }
777 if (tasks.Length == 0)
778 {
779 ThrowHelper.ThrowArgumentException(ExceptionResource.Task_MultiTaskContinuation_EmptyTaskList, ExceptionArgument.tasks);
780 }
781 if (scheduler == null)
782 {
784 }
786 if (cancellationToken.IsCancellationRequested && (continuationOptions & TaskContinuationOptions.LazyCancellation) == 0)
787 {
788 return CreateCanceledTask(continuationOptions, cancellationToken);
789 }
790 if (continuationFunction != null)
791 {
793 }
794 return task.ContinueWith(delegate(Task<Task> completedTask, object state)
795 {
797 return default(TResult);
799 }
800
801 internal static Task<TResult> ContinueWhenAnyImpl<TAntecedentResult>(Task<TAntecedentResult>[] tasks, Func<Task<TAntecedentResult>, TResult> continuationFunction, Action<Task<TAntecedentResult>> continuationAction, TaskContinuationOptions continuationOptions, CancellationToken cancellationToken, TaskScheduler scheduler)
802 {
804 if (tasks == null)
805 {
807 }
808 if (tasks.Length == 0)
809 {
810 ThrowHelper.ThrowArgumentException(ExceptionResource.Task_MultiTaskContinuation_EmptyTaskList, ExceptionArgument.tasks);
811 }
812 if (scheduler == null)
813 {
815 }
817 if (cancellationToken.IsCancellationRequested && (continuationOptions & TaskContinuationOptions.LazyCancellation) == 0)
818 {
819 return CreateCanceledTask(continuationOptions, cancellationToken);
820 }
821 if (continuationFunction != null)
822 {
824 }
826 }
827}
828public class TaskFactory
829{
830 private sealed class CompleteOnCountdownPromise : Task<Task[]>, ITaskCompletionAction
831 {
832 private readonly Task[] _tasks;
833
834 private int _count;
835
836 public bool InvokeMayRunArbitraryCode => true;
837
838 private protected override bool ShouldNotifyDebuggerOfWaitCompletion
839 {
840 get
841 {
842 if (base.ShouldNotifyDebuggerOfWaitCompletion)
843 {
845 }
846 return false;
847 }
848 }
849
851 {
852 _tasks = tasksCopy;
853 _count = tasksCopy.Length;
854 if (TplEventSource.Log.IsEnabled())
855 {
856 TplEventSource.Log.TraceOperationBegin(base.Id, "TaskFactory.ContinueWhenAll", 0L);
857 }
859 {
861 }
862 }
863
865 {
866 if (TplEventSource.Log.IsEnabled())
867 {
868 TplEventSource.Log.TraceOperationRelation(base.Id, CausalityRelation.Join);
869 }
870 if (completingTask.IsWaitNotificationEnabled)
871 {
872 SetNotificationForWaitCompletion(enabled: true);
873 }
874 if (Interlocked.Decrement(ref _count) == 0)
875 {
876 if (TplEventSource.Log.IsEnabled())
877 {
878 TplEventSource.Log.TraceOperationEnd(base.Id, AsyncCausalityStatus.Completed);
879 }
881 {
883 }
884 TrySetResult(_tasks);
885 }
886 }
887 }
888
889 private sealed class CompleteOnCountdownPromise<T> : Task<Task<T>[]>, ITaskCompletionAction
890 {
891 private readonly Task<T>[] _tasks;
892
893 private int _count;
894
895 public bool InvokeMayRunArbitraryCode => true;
896
897 private protected override bool ShouldNotifyDebuggerOfWaitCompletion
898 {
899 get
900 {
901 if (base.ShouldNotifyDebuggerOfWaitCompletion)
902 {
903 Task[] tasks = _tasks;
905 }
906 return false;
907 }
908 }
909
911 {
912 _tasks = tasksCopy;
913 _count = tasksCopy.Length;
914 if (TplEventSource.Log.IsEnabled())
915 {
916 TplEventSource.Log.TraceOperationBegin(base.Id, "TaskFactory.ContinueWhenAll<>", 0L);
917 }
919 {
921 }
922 }
923
925 {
926 if (TplEventSource.Log.IsEnabled())
927 {
928 TplEventSource.Log.TraceOperationRelation(base.Id, CausalityRelation.Join);
929 }
930 if (completingTask.IsWaitNotificationEnabled)
931 {
932 SetNotificationForWaitCompletion(enabled: true);
933 }
934 if (Interlocked.Decrement(ref _count) == 0)
935 {
936 if (TplEventSource.Log.IsEnabled())
937 {
938 TplEventSource.Log.TraceOperationEnd(base.Id, AsyncCausalityStatus.Completed);
939 }
941 {
943 }
944 TrySetResult(_tasks);
945 }
946 }
947 }
948
950 {
952
953 private int _stateFlags;
954
955 public bool InvokeMayRunArbitraryCode => (_stateFlags & 2) == 0;
956
958 {
959 _tasks = tasks;
960 if (isSyncBlocking)
961 {
962 _stateFlags = 2;
963 }
964 if (TplEventSource.Log.IsEnabled())
965 {
966 TplEventSource.Log.TraceOperationBegin(base.Id, "TaskFactory.ContinueWhenAny", 0L);
967 }
969 {
971 }
972 }
973
975 {
976 int stateFlags = _stateFlags;
977 int num = stateFlags & 2;
978 if (((uint)stateFlags & (true ? 1u : 0u)) != 0 || Interlocked.Exchange(ref _stateFlags, num | 1) != num)
979 {
980 return;
981 }
982 if (TplEventSource.Log.IsEnabled())
983 {
984 TplEventSource.Log.TraceOperationRelation(base.Id, CausalityRelation.Choice);
985 TplEventSource.Log.TraceOperationEnd(base.Id, AsyncCausalityStatus.Completed);
986 }
988 {
990 }
991 bool flag = TrySetResult(completingTask);
992 IList<Task> tasks = _tasks;
993 int count = tasks.Count;
994 for (int i = 0; i < count; i++)
995 {
996 Task task = tasks[i];
997 if (task != null && !task.IsCompleted)
998 {
999 task.RemoveContinuation(this);
1000 }
1001 }
1002 _tasks = null;
1003 }
1004 }
1005
1006 private readonly CancellationToken m_defaultCancellationToken;
1007
1008 private readonly TaskScheduler m_defaultScheduler;
1009
1010 private readonly TaskCreationOptions m_defaultCreationOptions;
1011
1012 private readonly TaskContinuationOptions m_defaultContinuationOptions;
1013
1014 private TaskScheduler DefaultScheduler => m_defaultScheduler ?? TaskScheduler.Current;
1015
1016 public CancellationToken CancellationToken => m_defaultCancellationToken;
1017
1018 public TaskScheduler? Scheduler => m_defaultScheduler;
1019
1020 public TaskCreationOptions CreationOptions => m_defaultCreationOptions;
1021
1022 public TaskContinuationOptions ContinuationOptions => m_defaultContinuationOptions;
1023
1025 {
1026 TaskScheduler? taskScheduler = m_defaultScheduler;
1027 if (taskScheduler == null)
1028 {
1029 if (currTask == null || (currTask.CreationOptions & TaskCreationOptions.HideScheduler) != 0)
1030 {
1031 return TaskScheduler.Default;
1032 }
1033 taskScheduler = currTask.ExecutingTaskScheduler;
1034 }
1035 return taskScheduler;
1036 }
1037
1039 {
1040 }
1041
1042 public TaskFactory(CancellationToken cancellationToken)
1043 {
1044 m_defaultCancellationToken = cancellationToken;
1045 }
1046
1047 public TaskFactory(TaskScheduler? scheduler)
1048 {
1049 m_defaultScheduler = scheduler;
1050 }
1051
1052 public TaskFactory(TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions)
1053 {
1054 CheckMultiTaskContinuationOptions(continuationOptions);
1055 CheckCreationOptions(creationOptions);
1056 m_defaultCreationOptions = creationOptions;
1057 m_defaultContinuationOptions = continuationOptions;
1058 }
1059
1060 public TaskFactory(CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions, TaskScheduler? scheduler)
1062 {
1063 m_defaultCancellationToken = cancellationToken;
1064 m_defaultScheduler = scheduler;
1065 }
1066
1067 internal static void CheckCreationOptions(TaskCreationOptions creationOptions)
1068 {
1069 if (((uint)creationOptions & 0xFFFFFFA0u) != 0)
1070 {
1072 }
1073 }
1074
1075 public Task StartNew(Action action)
1076 {
1078 return Task.InternalStartNew(internalCurrent, action, null, m_defaultCancellationToken, GetDefaultScheduler(internalCurrent), m_defaultCreationOptions, InternalTaskOptions.None);
1079 }
1080
1081 public Task StartNew(Action action, CancellationToken cancellationToken)
1082 {
1084 return Task.InternalStartNew(internalCurrent, action, null, cancellationToken, GetDefaultScheduler(internalCurrent), m_defaultCreationOptions, InternalTaskOptions.None);
1085 }
1086
1087 public Task StartNew(Action action, TaskCreationOptions creationOptions)
1088 {
1090 return Task.InternalStartNew(internalCurrent, action, null, m_defaultCancellationToken, GetDefaultScheduler(internalCurrent), creationOptions, InternalTaskOptions.None);
1091 }
1092
1097
1098 public Task StartNew(Action<object?> action, object? state)
1099 {
1101 return Task.InternalStartNew(internalCurrent, action, state, m_defaultCancellationToken, GetDefaultScheduler(internalCurrent), m_defaultCreationOptions, InternalTaskOptions.None);
1102 }
1103
1104 public Task StartNew(Action<object?> action, object? state, CancellationToken cancellationToken)
1105 {
1107 return Task.InternalStartNew(internalCurrent, action, state, cancellationToken, GetDefaultScheduler(internalCurrent), m_defaultCreationOptions, InternalTaskOptions.None);
1108 }
1109
1110 public Task StartNew(Action<object?> action, object? state, TaskCreationOptions creationOptions)
1111 {
1113 return Task.InternalStartNew(internalCurrent, action, state, m_defaultCancellationToken, GetDefaultScheduler(internalCurrent), creationOptions, InternalTaskOptions.None);
1114 }
1115
1120
1122 {
1124 return Task<TResult>.StartNew(internalCurrent, function, m_defaultCancellationToken, m_defaultCreationOptions, InternalTaskOptions.None, GetDefaultScheduler(internalCurrent));
1125 }
1126
1128 {
1130 return Task<TResult>.StartNew(internalCurrent, function, cancellationToken, m_defaultCreationOptions, InternalTaskOptions.None, GetDefaultScheduler(internalCurrent));
1131 }
1132
1134 {
1136 return Task<TResult>.StartNew(internalCurrent, function, m_defaultCancellationToken, creationOptions, InternalTaskOptions.None, GetDefaultScheduler(internalCurrent));
1137 }
1138
1143
1145 {
1147 return Task<TResult>.StartNew(internalCurrent, function, state, m_defaultCancellationToken, m_defaultCreationOptions, InternalTaskOptions.None, GetDefaultScheduler(internalCurrent));
1148 }
1149
1150 public Task<TResult> StartNew<TResult>(Func<object?, TResult> function, object? state, CancellationToken cancellationToken)
1151 {
1153 return Task<TResult>.StartNew(internalCurrent, function, state, cancellationToken, m_defaultCreationOptions, InternalTaskOptions.None, GetDefaultScheduler(internalCurrent));
1154 }
1155
1156 public Task<TResult> StartNew<TResult>(Func<object?, TResult> function, object? state, TaskCreationOptions creationOptions)
1157 {
1159 return Task<TResult>.StartNew(internalCurrent, function, state, m_defaultCancellationToken, creationOptions, InternalTaskOptions.None, GetDefaultScheduler(internalCurrent));
1160 }
1161
1162 public Task<TResult> StartNew<TResult>(Func<object?, TResult> function, object? state, CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskScheduler scheduler)
1163 {
1165 }
1166
1167 public Task FromAsync(IAsyncResult asyncResult, Action<IAsyncResult> endMethod)
1168 {
1169 return FromAsync(asyncResult, endMethod, m_defaultCreationOptions, DefaultScheduler);
1170 }
1171
1172 public Task FromAsync(IAsyncResult asyncResult, Action<IAsyncResult> endMethod, TaskCreationOptions creationOptions)
1173 {
1174 return FromAsync(asyncResult, endMethod, creationOptions, DefaultScheduler);
1175 }
1176
1177 public Task FromAsync(IAsyncResult asyncResult, Action<IAsyncResult> endMethod, TaskCreationOptions creationOptions, TaskScheduler scheduler)
1178 {
1180 }
1181
1183 {
1184 return FromAsync(beginMethod, endMethod, state, m_defaultCreationOptions);
1185 }
1186
1187 public Task FromAsync(Func<AsyncCallback, object?, IAsyncResult> beginMethod, Action<IAsyncResult> endMethod, object? state, TaskCreationOptions creationOptions)
1188 {
1190 }
1191
1193 {
1194 return FromAsync(beginMethod, endMethod, arg1, state, m_defaultCreationOptions);
1195 }
1196
1198 {
1200 }
1201
1203 {
1204 return FromAsync(beginMethod, endMethod, arg1, arg2, state, m_defaultCreationOptions);
1205 }
1206
1208 {
1210 }
1211
1213 {
1214 return FromAsync(beginMethod, endMethod, arg1, arg2, arg3, state, m_defaultCreationOptions);
1215 }
1216
1218 {
1220 }
1221
1223 {
1224 return TaskFactory<TResult>.FromAsyncImpl(asyncResult, endMethod, null, m_defaultCreationOptions, DefaultScheduler);
1225 }
1226
1228 {
1229 return TaskFactory<TResult>.FromAsyncImpl(asyncResult, endMethod, null, creationOptions, DefaultScheduler);
1230 }
1231
1233 {
1235 }
1236
1238 {
1239 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod, null, state, m_defaultCreationOptions);
1240 }
1241
1243 {
1244 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod, null, state, creationOptions);
1245 }
1246
1248 {
1249 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod, null, arg1, state, m_defaultCreationOptions);
1250 }
1251
1256
1258 {
1259 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod, null, arg1, arg2, state, m_defaultCreationOptions);
1260 }
1261
1266
1268 {
1269 return TaskFactory<TResult>.FromAsyncImpl(beginMethod, endMethod, null, arg1, arg2, arg3, state, m_defaultCreationOptions);
1270 }
1271
1276
1277 internal static void CheckFromAsyncOptions(TaskCreationOptions creationOptions, bool hasBeginMethod)
1278 {
1279 if (hasBeginMethod)
1280 {
1281 if ((creationOptions & TaskCreationOptions.LongRunning) != 0)
1282 {
1283 throw new ArgumentOutOfRangeException("creationOptions", SR.Task_FromAsync_LongRunning);
1284 }
1285 if ((creationOptions & TaskCreationOptions.PreferFairness) != 0)
1286 {
1287 throw new ArgumentOutOfRangeException("creationOptions", SR.Task_FromAsync_PreferFairness);
1288 }
1289 }
1290 if (((uint)creationOptions & 0xFFFFFFE0u) != 0)
1291 {
1293 }
1294 }
1295
1297 {
1299 for (int i = 0; i < tasksCopy.Length; i++)
1300 {
1301 if (tasksCopy[i].IsCompleted)
1302 {
1304 }
1305 else
1306 {
1307 tasksCopy[i].AddCompletionAction(completeOnCountdownPromise);
1308 }
1309 }
1311 }
1312
1314 {
1316 for (int i = 0; i < tasksCopy.Length; i++)
1317 {
1318 if (tasksCopy[i].IsCompleted)
1319 {
1321 }
1322 else
1323 {
1324 tasksCopy[i].AddCompletionAction(completeOnCountdownPromise);
1325 }
1326 }
1328 }
1329
1330 public Task ContinueWhenAll(Task[] tasks, Action<Task[]> continuationAction)
1331 {
1332 if (continuationAction == null)
1333 {
1334 throw new ArgumentNullException("continuationAction");
1335 }
1336 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks, null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
1337 }
1338
1339 public Task ContinueWhenAll(Task[] tasks, Action<Task[]> continuationAction, CancellationToken cancellationToken)
1340 {
1341 if (continuationAction == null)
1342 {
1343 throw new ArgumentNullException("continuationAction");
1344 }
1345 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks, null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
1346 }
1347
1348 public Task ContinueWhenAll(Task[] tasks, Action<Task[]> continuationAction, TaskContinuationOptions continuationOptions)
1349 {
1350 if (continuationAction == null)
1351 {
1352 throw new ArgumentNullException("continuationAction");
1353 }
1354 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks, null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
1355 }
1356
1357 public Task ContinueWhenAll(Task[] tasks, Action<Task[]> continuationAction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
1358 {
1359 if (continuationAction == null)
1360 {
1361 throw new ArgumentNullException("continuationAction");
1362 }
1364 }
1365
1367 {
1368 if (continuationAction == null)
1369 {
1370 throw new ArgumentNullException("continuationAction");
1371 }
1372 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks, null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
1373 }
1374
1376 {
1377 if (continuationAction == null)
1378 {
1379 throw new ArgumentNullException("continuationAction");
1380 }
1381 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks, null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
1382 }
1383
1385 {
1386 if (continuationAction == null)
1387 {
1388 throw new ArgumentNullException("continuationAction");
1389 }
1390 return TaskFactory<VoidTaskResult>.ContinueWhenAllImpl(tasks, null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
1391 }
1392
1393 public Task ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[] tasks, Action<Task<TAntecedentResult>[]> continuationAction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
1394 {
1395 if (continuationAction == null)
1396 {
1397 throw new ArgumentNullException("continuationAction");
1398 }
1400 }
1401
1402 public Task<TResult> ContinueWhenAll<TResult>(Task[] tasks, Func<Task[], TResult> continuationFunction)
1403 {
1404 if (continuationFunction == null)
1405 {
1406 throw new ArgumentNullException("continuationFunction");
1407 }
1408 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
1409 }
1410
1411 public Task<TResult> ContinueWhenAll<TResult>(Task[] tasks, Func<Task[], TResult> continuationFunction, CancellationToken cancellationToken)
1412 {
1413 if (continuationFunction == null)
1414 {
1415 throw new ArgumentNullException("continuationFunction");
1416 }
1417 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
1418 }
1419
1420 public Task<TResult> ContinueWhenAll<TResult>(Task[] tasks, Func<Task[], TResult> continuationFunction, TaskContinuationOptions continuationOptions)
1421 {
1422 if (continuationFunction == null)
1423 {
1424 throw new ArgumentNullException("continuationFunction");
1425 }
1426 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
1427 }
1428
1429 public Task<TResult> ContinueWhenAll<TResult>(Task[] tasks, Func<Task[], TResult> continuationFunction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
1430 {
1431 if (continuationFunction == null)
1432 {
1433 throw new ArgumentNullException("continuationFunction");
1434 }
1436 }
1437
1439 {
1440 if (continuationFunction == null)
1441 {
1442 throw new ArgumentNullException("continuationFunction");
1443 }
1444 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
1445 }
1446
1448 {
1449 if (continuationFunction == null)
1450 {
1451 throw new ArgumentNullException("continuationFunction");
1452 }
1453 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
1454 }
1455
1457 {
1458 if (continuationFunction == null)
1459 {
1460 throw new ArgumentNullException("continuationFunction");
1461 }
1462 return TaskFactory<TResult>.ContinueWhenAllImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
1463 }
1464
1466 {
1467 if (continuationFunction == null)
1468 {
1469 throw new ArgumentNullException("continuationFunction");
1470 }
1472 }
1473
1474 internal static Task<Task> CommonCWAnyLogic(IList<Task> tasks, bool isSyncBlocking = false)
1475 {
1477 bool flag = false;
1478 int count = tasks.Count;
1479 for (int i = 0; i < count; i++)
1480 {
1481 Task task = tasks[i];
1482 if (task == null)
1483 {
1485 }
1486 if (flag)
1487 {
1488 continue;
1489 }
1490 if (completeOnInvokePromise.IsCompleted)
1491 {
1492 flag = true;
1493 continue;
1494 }
1495 if (task.IsCompleted)
1496 {
1498 flag = true;
1499 continue;
1500 }
1501 task.AddCompletionAction(completeOnInvokePromise, isSyncBlocking);
1502 if (completeOnInvokePromise.IsCompleted)
1503 {
1504 task.RemoveContinuation(completeOnInvokePromise);
1505 }
1506 }
1508 }
1509
1511 {
1512 ((CompleteOnInvokePromise)continuation).Invoke(null);
1513 }
1514
1515 public Task ContinueWhenAny(Task[] tasks, Action<Task> continuationAction)
1516 {
1517 if (continuationAction == null)
1518 {
1519 throw new ArgumentNullException("continuationAction");
1520 }
1521 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks, null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
1522 }
1523
1524 public Task ContinueWhenAny(Task[] tasks, Action<Task> continuationAction, CancellationToken cancellationToken)
1525 {
1526 if (continuationAction == null)
1527 {
1528 throw new ArgumentNullException("continuationAction");
1529 }
1530 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks, null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
1531 }
1532
1533 public Task ContinueWhenAny(Task[] tasks, Action<Task> continuationAction, TaskContinuationOptions continuationOptions)
1534 {
1535 if (continuationAction == null)
1536 {
1537 throw new ArgumentNullException("continuationAction");
1538 }
1539 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks, null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
1540 }
1541
1542 public Task ContinueWhenAny(Task[] tasks, Action<Task> continuationAction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
1543 {
1544 if (continuationAction == null)
1545 {
1546 throw new ArgumentNullException("continuationAction");
1547 }
1549 }
1550
1552 {
1553 if (continuationFunction == null)
1554 {
1555 throw new ArgumentNullException("continuationFunction");
1556 }
1557 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
1558 }
1559
1560 public Task<TResult> ContinueWhenAny<TResult>(Task[] tasks, Func<Task, TResult> continuationFunction, CancellationToken cancellationToken)
1561 {
1562 if (continuationFunction == null)
1563 {
1564 throw new ArgumentNullException("continuationFunction");
1565 }
1566 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
1567 }
1568
1569 public Task<TResult> ContinueWhenAny<TResult>(Task[] tasks, Func<Task, TResult> continuationFunction, TaskContinuationOptions continuationOptions)
1570 {
1571 if (continuationFunction == null)
1572 {
1573 throw new ArgumentNullException("continuationFunction");
1574 }
1575 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
1576 }
1577
1578 public Task<TResult> ContinueWhenAny<TResult>(Task[] tasks, Func<Task, TResult> continuationFunction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
1579 {
1580 if (continuationFunction == null)
1581 {
1582 throw new ArgumentNullException("continuationFunction");
1583 }
1585 }
1586
1588 {
1589 if (continuationFunction == null)
1590 {
1591 throw new ArgumentNullException("continuationFunction");
1592 }
1593 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
1594 }
1595
1597 {
1598 if (continuationFunction == null)
1599 {
1600 throw new ArgumentNullException("continuationFunction");
1601 }
1602 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
1603 }
1604
1606 {
1607 if (continuationFunction == null)
1608 {
1609 throw new ArgumentNullException("continuationFunction");
1610 }
1611 return TaskFactory<TResult>.ContinueWhenAnyImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
1612 }
1613
1615 {
1616 if (continuationFunction == null)
1617 {
1618 throw new ArgumentNullException("continuationFunction");
1619 }
1621 }
1622
1624 {
1625 if (continuationAction == null)
1626 {
1627 throw new ArgumentNullException("continuationAction");
1628 }
1629 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks, null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler);
1630 }
1631
1633 {
1634 if (continuationAction == null)
1635 {
1636 throw new ArgumentNullException("continuationAction");
1637 }
1638 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks, null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler);
1639 }
1640
1642 {
1643 if (continuationAction == null)
1644 {
1645 throw new ArgumentNullException("continuationAction");
1646 }
1647 return TaskFactory<VoidTaskResult>.ContinueWhenAnyImpl(tasks, null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler);
1648 }
1649
1650 public Task ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[] tasks, Action<Task<TAntecedentResult>> continuationAction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
1651 {
1652 if (continuationAction == null)
1653 {
1654 throw new ArgumentNullException("continuationAction");
1655 }
1657 }
1658
1660 {
1661 if (tasks == null)
1662 {
1663 throw new ArgumentNullException("tasks");
1664 }
1665 if (tasks.Length == 0)
1666 {
1668 }
1669 Task[] array = new Task[tasks.Length];
1670 for (int i = 0; i < tasks.Length; i++)
1671 {
1672 array[i] = tasks[i];
1673 if (array[i] == null)
1674 {
1676 }
1677 }
1678 return array;
1679 }
1680
1682 {
1683 if (tasks == null)
1684 {
1685 throw new ArgumentNullException("tasks");
1686 }
1687 if (tasks.Length == 0)
1688 {
1690 }
1691 Task<TResult>[] array = new Task<TResult>[tasks.Length];
1692 for (int i = 0; i < tasks.Length; i++)
1693 {
1694 array[i] = tasks[i];
1695 if (array[i] == null)
1696 {
1698 }
1699 }
1700 return array;
1701 }
1702
1703 internal static void CheckMultiTaskContinuationOptions(TaskContinuationOptions continuationOptions)
1704 {
1705 if ((continuationOptions & (TaskContinuationOptions.LongRunning | TaskContinuationOptions.ExecuteSynchronously)) == (TaskContinuationOptions.LongRunning | TaskContinuationOptions.ExecuteSynchronously))
1706 {
1707 throw new ArgumentOutOfRangeException("continuationOptions", SR.Task_ContinueWith_ESandLR);
1708 }
1709 if (((uint)continuationOptions & 0xFFF0FFC0u) != 0)
1710 {
1711 throw new ArgumentOutOfRangeException("continuationOptions");
1712 }
1713 if ((continuationOptions & (TaskContinuationOptions.OnlyOnRanToCompletion | TaskContinuationOptions.NotOnRanToCompletion)) != 0)
1714 {
1716 }
1717 }
1718}
static string Task_MultiTaskContinuation_EmptyTaskList
Definition SR.cs:1938
static string Task_FromAsync_PreferFairness
Definition SR.cs:1936
static string Task_MultiTaskContinuation_FireOptions
Definition SR.cs:1940
static string Task_FromAsync_LongRunning
Definition SR.cs:1934
static string Task_MultiTaskContinuation_NullTask
Definition SR.cs:1942
static string Task_ContinueWith_ESandLR
Definition SR.cs:1924
Definition SR.cs:7
static int Exchange(ref int location1, int value)
static int Decrement(ref int location)
CompleteOnInvokePromise(IList< Task > tasks, bool isSyncBlocking)
void Complete(TInstance thisRef, Func< TInstance, IAsyncResult, TResult > endMethod, IAsyncResult asyncResult, bool requiresSynchronization)
static readonly AsyncCallback s_completeFromAsyncResult
Definition TaskFactory.cs:9
Func< TInstance, IAsyncResult, TResult > m_endMethod
static void CompleteFromAsyncResult(IAsyncResult asyncResult)
FromAsyncTrimPromise(TInstance thisRef, Func< TInstance, IAsyncResult, TResult > endMethod)
Task< TResult > ContinueWhenAll(Task[] tasks, Func< Task[], TResult > continuationFunction, TaskContinuationOptions continuationOptions)
Task< TResult > ContinueWhenAny(Task[] tasks, Func< Task, TResult > continuationFunction)
static void CommonCWAnyLogicCleanup(Task< Task > continuation)
Task ContinueWhenAny(Task[] tasks, Action< Task > continuationAction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
Task< TResult > StartNew(Func< object?, TResult > function, object? state, CancellationToken cancellationToken)
Task FromAsync(Func< AsyncCallback, object?, IAsyncResult > beginMethod, Action< IAsyncResult > endMethod, object? state)
TaskFactory(TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions)
TaskFactory(TaskScheduler? scheduler)
Task< TResult > FromAsync(IAsyncResult asyncResult, Func< IAsyncResult, TResult > endMethod, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Task FromAsync(IAsyncResult asyncResult, Action< IAsyncResult > endMethod, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Task< TResult > ContinueWhenAny(Task[] tasks, Func< Task, TResult > continuationFunction, CancellationToken cancellationToken)
static Task< TResult > FromAsyncImpl(Func< AsyncCallback, object, IAsyncResult > beginMethod, Func< IAsyncResult, TResult > endFunction, Action< IAsyncResult > endAction, object state, TaskCreationOptions creationOptions)
readonly TaskCreationOptions m_defaultCreationOptions
static Task< Task > CommonCWAnyLogic(IList< Task > tasks, bool isSyncBlocking=false)
static Task< Task[]> CommonCWAllLogic(Task[] tasksCopy)
Task FromAsync(IAsyncResult asyncResult, Action< IAsyncResult > endMethod)
static Task< TResult > FromAsyncImpl(IAsyncResult asyncResult, Func< IAsyncResult, TResult > endFunction, Action< IAsyncResult > endAction, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Task< TResult > ContinueWhenAll(Task[] tasks, Func< Task[], TResult > continuationFunction)
Task ContinueWhenAny(Task[] tasks, Action< Task > continuationAction)
static Task< TResult > ContinueWhenAllImpl(Task[] tasks, Func< Task[], TResult > continuationFunction, Action< Task[]> continuationAction, TaskContinuationOptions continuationOptions, CancellationToken cancellationToken, TaskScheduler scheduler)
static void CheckFromAsyncOptions(TaskCreationOptions creationOptions, bool hasBeginMethod)
Task< TResult > ContinueWhenAny(Task[] tasks, Func< Task, TResult > continuationFunction, TaskContinuationOptions continuationOptions)
Task< TResult > StartNew(Func< TResult > function, CancellationToken cancellationToken)
static void CheckCreationOptions(TaskCreationOptions creationOptions)
Task< TResult > StartNew(Func< object?, TResult > function, object? state)
Task StartNew(Action action, CancellationToken cancellationToken)
Task< TResult > FromAsync(IAsyncResult asyncResult, Func< IAsyncResult, TResult > endMethod, TaskCreationOptions creationOptions)
Task ContinueWhenAll(Task[] tasks, Action< Task[]> continuationAction)
Task ContinueWhenAll(Task[] tasks, Action< Task[]> continuationAction, TaskContinuationOptions continuationOptions)
Task< TResult > StartNew(Func< object?, TResult > function, object? state, CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Task< TResult > FromAsync(Func< AsyncCallback, object?, IAsyncResult > beginMethod, Func< IAsyncResult, TResult > endMethod, object? state)
readonly TaskScheduler m_defaultScheduler
static Task[] CheckMultiContinuationTasksAndCopy(Task[] tasks)
Task< TResult > FromAsync(IAsyncResult asyncResult, Func< IAsyncResult, TResult > endMethod)
Task< TResult > FromAsync(Func< AsyncCallback, object?, IAsyncResult > beginMethod, Func< IAsyncResult, TResult > endMethod, object? state, TaskCreationOptions creationOptions)
Task< TResult > StartNew(Func< object?, TResult > function, object? state, TaskCreationOptions creationOptions)
static void FromAsyncCoreLogic(IAsyncResult iar, Func< IAsyncResult, TResult > endFunction, Action< IAsyncResult > endAction, Task< TResult > promise, bool requiresSynchronization)
static void CheckMultiTaskContinuationOptions(TaskContinuationOptions continuationOptions)
Task StartNew(Action action, CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Task StartNew(Action action, TaskCreationOptions creationOptions)
Task FromAsync(IAsyncResult asyncResult, Action< IAsyncResult > endMethod, TaskCreationOptions creationOptions)
Task StartNew(Action< object?> action, object? state, CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskScheduler scheduler)
TaskCreationOptions CreationOptions
Task ContinueWhenAll(Task[] tasks, Action< Task[]> continuationAction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
Task< TResult > StartNew(Func< TResult > function)
Task StartNew(Action< object?> action, object? state, CancellationToken cancellationToken)
Task ContinueWhenAny(Task[] tasks, Action< Task > continuationAction, CancellationToken cancellationToken)
TaskScheduler GetDefaultScheduler(Task currTask)
static Task< TResult > ContinueWhenAnyImpl(Task[] tasks, Func< Task, TResult > continuationFunction, Action< Task > continuationAction, TaskContinuationOptions continuationOptions, CancellationToken cancellationToken, TaskScheduler scheduler)
Task< TResult > ContinueWhenAll(Task[] tasks, Func< Task[], TResult > continuationFunction, CancellationToken cancellationToken)
Task< TResult > StartNew(Func< TResult > function, TaskCreationOptions creationOptions)
TaskFactory(CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions, TaskScheduler? scheduler)
Task< TResult > StartNew(Func< TResult > function, CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskScheduler scheduler)
Task StartNew(Action< object?> action, object? state)
static Task< TResult > CreateCanceledTask(TaskContinuationOptions continuationOptions, CancellationToken ct)
Task< TResult > ContinueWhenAny(Task[] tasks, Func< Task, TResult > continuationFunction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
Task FromAsync(Func< AsyncCallback, object?, IAsyncResult > beginMethod, Action< IAsyncResult > endMethod, object? state, TaskCreationOptions creationOptions)
TaskFactory(CancellationToken cancellationToken)
readonly TaskContinuationOptions m_defaultContinuationOptions
Task StartNew(Action< object?> action, object? state, TaskCreationOptions creationOptions)
TaskContinuationOptions ContinuationOptions
Task< TResult > ContinueWhenAll(Task[] tasks, Func< Task[], TResult > continuationFunction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
Task ContinueWhenAny(Task[] tasks, Action< Task > continuationAction, TaskContinuationOptions continuationOptions)
readonly CancellationToken m_defaultCancellationToken
Task ContinueWhenAll(Task[] tasks, Action< Task[]> continuationAction, CancellationToken cancellationToken)
static void CreationOptionsFromContinuationOptions(TaskContinuationOptions continuationOptions, out TaskCreationOptions creationOptions, out InternalTaskOptions internalOptions)
Definition Task.cs:2902
static bool s_asyncDebuggingEnabled
Definition Task.cs:960
void DangerousSetResult(TResult result)
Definition Task.cs:181
static Task InternalCurrentIfAttached(TaskCreationOptions creationOptions)
Definition Task.cs:1628
bool TrySetCanceled(CancellationToken tokenToRecord)
Definition Task.cs:2555
void InternalRunSynchronously(TaskScheduler scheduler, bool waitForCompletion)
Definition Task.cs:1550
bool TrySetException(object exceptionObject)
Definition Task.cs:2542
static ? Task InternalCurrent
Definition Task.cs:1011
static Task InternalStartNew(Task creatingTask, Delegate action, object state, CancellationToken cancellationToken, TaskScheduler scheduler, TaskCreationOptions options, InternalTaskOptions internalOptions)
Definition Task.cs:1602
static bool AddToActiveTasks(Task task)
Definition Task.cs:1186
static void RemoveFromActiveTasks(Task task)
Definition Task.cs:1197
static bool AnyTaskRequiresNotifyDebuggerOfWaitCompletion(Task[] tasks)
Definition Task.cs:1448
static readonly TplEventSource Log
static RegisteredWaitHandle RegisterWaitForSingleObject(WaitHandle waitObject, WaitOrTimerCallback callBack, object state, uint millisecondsTimeOutInterval, bool executeOnlyOnce, bool flowExecutionContext)
static void ThrowArgumentOutOfRangeException(System.ExceptionArgument argument)
static void ThrowArgumentNullException(string name)
static void ThrowArgumentException(ExceptionResource resource)