Task.WaitAll Método

Definición

Espera a que todos los objetos de Task proporcionados completen la ejecución.

Sobrecargas

WaitAll(Task[], Int32, CancellationToken)

Espera a que todos los objetos Task proporcionados completen la ejecución dentro de un número especificado de milisegundos o hasta que se cancele la espera.

WaitAll(ReadOnlySpan<Task>)

Espera a que todos los objetos de Task proporcionados completen la ejecución.

WaitAll(Task[])

Espera a que todos los objetos de Task proporcionados completen la ejecución.

WaitAll(IEnumerable<Task>, CancellationToken)

Espera a que todos los objetos de Task proporcionados completen la ejecución a menos que se cancele la espera.

WaitAll(Task[], Int32)

Espera a que todos los objetos de Task proporcionados completen la ejecución dentro de un número especificado de milisegundos.

WaitAll(Task[], CancellationToken)

Espera a que todos los objetos de Task proporcionados completen la ejecución a menos que se cancele la espera.

WaitAll(Task[], TimeSpan)

Espera a que todos los objetos cancelables proporcionados Task completen la ejecución dentro de un intervalo de tiempo especificado.

WaitAll(Task[], Int32, CancellationToken)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Espera a que todos los objetos Task proporcionados completen la ejecución dentro de un número especificado de milisegundos o hasta que se cancele la espera.

C#
public static bool WaitAll (System.Threading.Tasks.Task[] tasks, int millisecondsTimeout, System.Threading.CancellationToken cancellationToken);
C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool WaitAll (System.Threading.Tasks.Task[] tasks, int millisecondsTimeout, System.Threading.CancellationToken cancellationToken);

Parámetros

tasks
Task[]

Matriz de Task instancias en las que se va a esperar.

millisecondsTimeout
Int32

Número de milisegundos que se van a esperar o Infinite (-1) para esperar indefinidamente.

cancellationToken
CancellationToken

Un CancellationToken observar mientras espera a que se completen las tareas.

Devoluciones

true si todas las instancias de Task completaron la ejecución dentro del tiempo asignado; de lo contrario, false.

Atributos

Excepciones

Se han eliminado uno o varios de los objetos Task de tasks.

El argumento tasks es null.

Se canceló al menos una de las instancias de Task. Si se canceló una tarea, el AggregateException contiene un OperationCanceledException en su colección de InnerExceptions.

-o-

Se produjo una excepción durante la ejecución de al menos una de las instancias de Task.

millisecondsTimeout es un número negativo distinto de -1, que representa un tiempo de espera infinito.

El argumento tasks contiene un elemento NULL.

Se canceló el cancellationToken.

Comentarios

El argumento cancellationToken se usa para cancelar la operación de espera. La cancelación de las tareas es una operación distinta y la indica el AggregateException indicado anteriormente.

Se aplica a

.NET 9 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

WaitAll(ReadOnlySpan<Task>)

Espera a que todos los objetos de Task proporcionados completen la ejecución.

C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static void WaitAll (scoped ReadOnlySpan<System.Threading.Tasks.Task> tasks);

Parámetros

tasks
ReadOnlySpan<Task>

Matriz de Task instancias en las que se va a esperar.

Atributos

Excepciones

El argumento tasks contiene un elemento null.

Se canceló al menos una de las instancias de Task.

-o-

Se produjo una excepción durante la ejecución de al menos una de las instancias de Task.

Se aplica a

.NET 9
Producto Versiones
.NET 9

WaitAll(Task[])

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Espera a que todos los objetos de Task proporcionados completen la ejecución.

C#
public static void WaitAll (params System.Threading.Tasks.Task[] tasks);
C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static void WaitAll (params System.Threading.Tasks.Task[] tasks);

Parámetros

tasks
Task[]

Matriz de Task instancias en las que se va a esperar.

Atributos

Excepciones

Se han eliminado uno o varios de los objetos Task de tasks.

El argumento tasks es null.

El argumento tasks contiene un elemento NULL.

Se canceló al menos una de las instancias de Task. Si se canceló una tarea, la excepción AggregateException contiene una excepción de OperationCanceledException en su colección InnerExceptions.

-o-

Se produjo una excepción durante la ejecución de al menos una de las instancias de Task.

Ejemplos

En el ejemplo siguiente se inician 10 tareas, cada una de las cuales se pasa un índice como un objeto de estado. Las tareas con un índice de dos a cinco inician excepciones. La llamada al método WaitAll ajusta todas las excepciones de un objeto AggregateException y la propaga al subproceso que realiza la llamada.

C#
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

class Example
{
    static void Main()
    {
        var tasks = new List<Task<int>>();
         
        // Define a delegate that prints and returns the system tick count
        Func<object, int> action = (object obj) =>
        {
            int i = (int)obj;

            // Make each thread sleep a different time in order to return a different tick count
            Thread.Sleep(i * 100);

            // The tasks that receive an argument between 2 and 5 throw exceptions
            if (2 <= i && i <= 5)
            {
                throw new InvalidOperationException("SIMULATED EXCEPTION");
            }

            int tickCount = Environment.TickCount;
            Console.WriteLine("Task={0}, i={1}, TickCount={2}, Thread={3}", Task.CurrentId, i, tickCount, Thread.CurrentThread.ManagedThreadId);

            return tickCount;
        };

        // Construct started tasks
        for (int i = 0; i < 10; i++)
        {
            int index = i;
            tasks.Add(Task<int>.Factory.StartNew(action, index));
        }

        try
        {
            // Wait for all the tasks to finish.
            Task.WaitAll(tasks.ToArray());

            // We should never get to this point
            Console.WriteLine("WaitAll() has not thrown exceptions. THIS WAS NOT EXPECTED.");
        }
        catch (AggregateException e)
        {
            Console.WriteLine("\nThe following exceptions have been thrown by WaitAll(): (THIS WAS EXPECTED)");
            for (int j = 0; j < e.InnerExceptions.Count; j++)
            {
                Console.WriteLine("\n-------------------------------------------------\n{0}", e.InnerExceptions[j].ToString());
            }
        }
    }
}
// The example displays output like the following:
//     Task=1, i=0, TickCount=1203822250, Thread=3
//     Task=2, i=1, TickCount=1203822359, Thread=4
//     Task=7, i=6, TickCount=1203823484, Thread=3
//     Task=8, i=7, TickCount=1203823890, Thread=4
//     Task=9, i=8, TickCount=1203824296, Thread=3
//     Task=10, i=9, TickCount=1203824796, Thread=4
//     
//     The following exceptions have been thrown by WaitAll(): (THIS WAS EXPECTED)
//     
//     -------------------------------------------------
//     System.InvalidOperationException: SIMULATED EXCEPTION
//        at Example.<Main>b__0(Object obj)
//        at System.Threading.Tasks.Task`1.InnerInvoke()
//        at System.Threading.Tasks.Task.Execute()
//     
//     -------------------------------------------------
//     System.InvalidOperationException: SIMULATED EXCEPTION
//        at Example.<Main>b__0(Object obj)
//        at System.Threading.Tasks.Task`1.InnerInvoke()
//        at System.Threading.Tasks.Task.Execute()
//     
//     -------------------------------------------------
//     System.InvalidOperationException: SIMULATED EXCEPTION
//        at Example.<Main>b__0(Object obj)
//        at System.Threading.Tasks.Task`1.InnerInvoke()
//        at System.Threading.Tasks.Task.Execute()
//     
//     -------------------------------------------------
//     System.InvalidOperationException: SIMULATED EXCEPTION
//        at Example.<Main>b__0(Object obj)
//        at System.Threading.Tasks.Task`1.InnerInvoke()
//        at System.Threading.Tasks.Task.Execute()

Se aplica a

.NET 9 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

WaitAll(IEnumerable<Task>, CancellationToken)

Espera a que todos los objetos de Task proporcionados completen la ejecución a menos que se cancele la espera.

C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static void WaitAll (System.Collections.Generic.IEnumerable<System.Threading.Tasks.Task> tasks, System.Threading.CancellationToken cancellationToken = default);

Parámetros

tasks
IEnumerable<Task>

Un IEnumerable<T> de instancias de tarea en las que se va a esperar.

cancellationToken
CancellationToken

Un System.Threading.Tasks.Task.CancellationToken observar mientras espera a que se completen las tareas.

Atributos

Excepciones

El argumento tasks es null.

El argumento tasks contiene un elemento null.

Se han eliminado uno o varios de los objetos de Task en las tareas.

Se canceló el cancellationToken.

Se canceló al menos una de las instancias de Task. Si se canceló una tarea, el AggregateException contiene un OperationCanceledException en su colección de InnerExceptions.

Se aplica a

.NET 9
Producto Versiones
.NET 9

WaitAll(Task[], Int32)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Espera a que todos los objetos de Task proporcionados completen la ejecución dentro de un número especificado de milisegundos.

C#
public static bool WaitAll (System.Threading.Tasks.Task[] tasks, int millisecondsTimeout);
C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool WaitAll (System.Threading.Tasks.Task[] tasks, int millisecondsTimeout);

Parámetros

tasks
Task[]

Matriz de Task instancias en las que se va a esperar.

millisecondsTimeout
Int32

Número de milisegundos que se van a esperar o Infinite (-1) para esperar indefinidamente.

Devoluciones

true si todas las instancias de Task completaron la ejecución dentro del tiempo asignado; de lo contrario, false.

Atributos

Excepciones

Se han eliminado uno o varios de los objetos Task de tasks.

El argumento tasks es null.

Se canceló al menos una de las instancias de Task. Si se canceló una tarea, el AggregateException contiene un OperationCanceledException en su colección de InnerExceptions.

-o-

Se produjo una excepción durante la ejecución de al menos una de las instancias de Task.

millisecondsTimeout es un número negativo distinto de -1, que representa un tiempo de espera infinito.

El argumento tasks contiene un elemento NULL.

Se aplica a

.NET 9 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

WaitAll(Task[], CancellationToken)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Espera a que todos los objetos de Task proporcionados completen la ejecución a menos que se cancele la espera.

C#
public static void WaitAll (System.Threading.Tasks.Task[] tasks, System.Threading.CancellationToken cancellationToken);
C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static void WaitAll (System.Threading.Tasks.Task[] tasks, System.Threading.CancellationToken cancellationToken);

Parámetros

tasks
Task[]

Matriz de Task instancias en las que se va a esperar.

cancellationToken
CancellationToken

Un CancellationToken observar mientras espera a que se completen las tareas.

Atributos

Excepciones

Se canceló el cancellationToken.

El argumento tasks es null.

Se canceló al menos una de las instancias de Task. Si se canceló una tarea, el AggregateException contiene un OperationCanceledException en su colección de InnerExceptions.

-o-

Se produjo una excepción durante la ejecución de al menos una de las instancias de Task.

El argumento tasks contiene un elemento NULL.

Se han eliminado uno o varios de los objetos Task de tasks.

Comentarios

El argumento cancellationToken se usa para cancelar la operación de espera. La cancelación de las tareas es una operación distinta y la indica el AggregateException como se indicó anteriormente.

Se aplica a

.NET 9 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

WaitAll(Task[], TimeSpan)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Espera a que todos los objetos cancelables proporcionados Task completen la ejecución dentro de un intervalo de tiempo especificado.

C#
public static bool WaitAll (System.Threading.Tasks.Task[] tasks, TimeSpan timeout);
C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool WaitAll (System.Threading.Tasks.Task[] tasks, TimeSpan timeout);

Parámetros

tasks
Task[]

Matriz de Task instancias en las que se va a esperar.

timeout
TimeSpan

Un TimeSpan que representa el número de milisegundos que se van a esperar, o un TimeSpan que representa -1 milisegundos que se van a esperar indefinidamente.

Devoluciones

true si todas las instancias de Task completaron la ejecución dentro del tiempo asignado; de lo contrario, false.

Atributos

Excepciones

Se han eliminado uno o varios de los objetos Task de tasks.

El argumento tasks es null.

Se canceló al menos una de las instancias de Task. Si se canceló una tarea, el AggregateException contiene un OperationCanceledException en su colección de InnerExceptions.

-o-

Se produjo una excepción durante la ejecución de al menos una de las instancias de Task.

timeout es un número negativo distinto de -1 milisegundos, que representa un tiempo de espera infinito.

-o-

timeout es mayor que Int32.MaxValue.

El argumento tasks contiene un elemento NULL.

Se aplica a

.NET 9 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0