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

◆ CommonCWAnyLogic()

static Task< Task > System.Threading.Tasks.TaskFactory< TResult >.CommonCWAnyLogic ( IList< Task > tasks,
bool isSyncBlocking = false )
inlinestaticpackage

Definition at line 1474 of file TaskFactory.cs.

1475 {
1476 CompleteOnInvokePromise completeOnInvokePromise = new CompleteOnInvokePromise(tasks, isSyncBlocking);
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 {
1484 throw new ArgumentException(SR.Task_MultiTaskContinuation_NullTask, "tasks");
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 }

References System.task, System.SR.Task_MultiTaskContinuation_NullTask, and System.tasks.

Referenced by System.Threading.Tasks.TaskFactory< TResult >.ContinueWhenAnyImpl(), System.Threading.Tasks.TaskFactory< TResult >.ContinueWhenAnyImpl< TAntecedentResult >(), System.Threading.Tasks.Task< TResult >.WaitAnyCore(), System.Threading.Tasks.Task< TResult >.WhenAny(), and System.Threading.Tasks.Task< TResult >.WhenAny().