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

Clases base
Any Task WhenAllTask

Constructores

new(Task[] tasks)
#

Métodos

override Run()
#

override

AddWaiterTo(Task task)
#

Miembros privados e internos (2)

Task[] tasks
#

private

i32 next
#

private

Miembros heredados (23)

Código fuente

WhenAllTask en Antril, descompilado a partir de su Larva HIR.

System.Threading.Tasks.WhenAllTask.ant
// 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);
			}
	}
}
Esc