final class · System.Threading.Tasks
WhenAllTask
final class WhenAllTask : Task
Waits for every task of a list: each one that finishes runs it, and it counts what is left.
- Kind
- final class
- Namespace
- System.Threading.Tasks
- Assembly
- System.Core
- Access
- internal, final
- Source file
Tasks.ant
Inheritance
Constructors
Methods
Inherited members (23)
Completemethod from TaskFailmethod from TaskPausemethod from TaskAddWaitermethod from TaskAddWaiterLockedmethod from TaskFinishmethod from TaskWakemethod from TaskWaitmethod from TaskCheckmethod from TaskDelaymethod from TaskYieldmethod from TaskDonemethod from TaskWhenAllmethod from TaskRunmethod from TaskRunmethod from TaskIsCompletedproperty from TaskIsFaultedproperty from TaskCompletedTaskproperty from TaskGetTypemethod from AnyUndescribedmethod from AnyToStringmethod from AnyHashmethod from Anydestroymethod from Any
Source
WhenAllTask as Antril, decompiled from its Larva HIR.
// System.Threading.Tasks.WhenAllTask — System.Core (decompiled from Larva HIR)
into namespace System.Threading.Tasks
{
/// Waits for every task of a list: each one that finishes runs it, and it counts what is left.
final class WhenAllTask : Task
{
Task[] tasks;
i32 next;
public:
new(Task[] tasks)
{
this.tasks = tasks;
}
override Run()
{
loop (next < tasks.Length)
{
Task task = tasks[next];
if (!task.IsCompleted)
{
AddWaiterTo(task);
return;
}
if (task.IsFaulted)
{
try
{
task.Check();
}
catch (any failure)
{
Fail(failure);
return;
}
}
next++;
}
Complete();
}
AddWaiterTo(Task task)
{
Pause(task);
}
}
}