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.
- Tipo
- final class
- Espacio de nombres
- System.Threading.Tasks
- Ensamblado
- System.Core
- Acceso
- internal, final
- Archivo fuente
Tasks.ant
Herencia
Constructores
Métodos
Miembros heredados (23)
Completemétodo de TaskFailmétodo de TaskPausemétodo de TaskAddWaitermétodo de TaskAddWaiterLockedmétodo de TaskFinishmétodo de TaskWakemétodo de TaskWaitmétodo de TaskCheckmétodo de TaskDelaymétodo de TaskYieldmétodo de TaskDonemétodo de TaskWhenAllmétodo de TaskRunmétodo de TaskRunmétodo de TaskIsCompletedpropiedad de TaskIsFaultedpropiedad de TaskCompletedTaskpropiedad de TaskGetTypemétodo de AnyUndescribedmétodo de AnyToStringmétodo de AnyHashmétodo de Anydestroymétodo de Any
Código fuente
WhenAllTask en Antril, descompilado a partir de su 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);
}
}
}