Task.WaitAny Método

Definición

Espera a que cualquiera de los objetos proporcionados Task complete la ejecución.

Sobrecargas

Nombre Description
WaitAny(Task[], Int32, CancellationToken)

Espera a que cualquiera de los objetos proporcionados Task complete la ejecución dentro de un número especificado de milisegundos o hasta que se cancele un token de cancelación.

WaitAny(Task[], TimeSpan)

Espera a que cualquiera de los objetos proporcionados Task complete la ejecución dentro de un intervalo de tiempo especificado.

WaitAny(Task[], Int32)

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

WaitAny(Task[], CancellationToken)

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

WaitAny(Task[])

Espera a que cualquiera de los objetos proporcionados Task complete la ejecución.

WaitAny(Task[], Int32, CancellationToken)

Espera a que cualquiera de los objetos proporcionados Task complete la ejecución dentro de un número especificado de milisegundos o hasta que se cancele un token de cancelación.

public:
 static int WaitAny(cli::array <System::Threading::Tasks::Task ^> ^ tasks, int millisecondsTimeout, System::Threading::CancellationToken cancellationToken);
public static int WaitAny(System.Threading.Tasks.Task[] tasks, int millisecondsTimeout, System.Threading.CancellationToken cancellationToken);
static member WaitAny : System.Threading.Tasks.Task[] * int * System.Threading.CancellationToken -> int
Public Shared Function WaitAny (tasks As Task(), millisecondsTimeout As Integer, cancellationToken As CancellationToken) As Integer

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

Que CancellationToken se debe observar mientras se espera a que se complete una tarea.

Devoluciones

Índice de la tarea completada en el argumento de matriz tasks o -1 si se produjo el tiempo de espera.

Excepciones

Se Task ha eliminado .

El tasks argumento es null.

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

El tasks argumento contiene un elemento NULL.

cancellationToken se canceló.

Se aplica a

WaitAny(Task[], TimeSpan)

Espera a que cualquiera de los objetos proporcionados Task complete la ejecución dentro de un intervalo de tiempo especificado.

public:
 static int WaitAny(cli::array <System::Threading::Tasks::Task ^> ^ tasks, TimeSpan timeout);
public static int WaitAny(System.Threading.Tasks.Task[] tasks, TimeSpan timeout);
static member WaitAny : System.Threading.Tasks.Task[] * TimeSpan -> int
Public Shared Function WaitAny (tasks As Task(), timeout As TimeSpan) As Integer

Parámetros

tasks
Task[]

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

timeout
TimeSpan

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

Devoluciones

Índice de la tarea completada en el argumento de matriz tasks o -1 si se produjo el tiempo de espera.

Excepciones

Se Task ha eliminado .

El tasks argumento es null.

La TotalMilliseconds propiedad del timeout argumento es un número negativo distinto de -1, que representa un tiempo de espera infinito.

O bien

La TotalMilliseconds propiedad del timeout argumento es mayor que Int32.MaxValue.

El tasks argumento contiene un elemento NULL.

Se aplica a

WaitAny(Task[], Int32)

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

public:
 static int WaitAny(cli::array <System::Threading::Tasks::Task ^> ^ tasks, int millisecondsTimeout);
public static int WaitAny(System.Threading.Tasks.Task[] tasks, int millisecondsTimeout);
static member WaitAny : System.Threading.Tasks.Task[] * int -> int
Public Shared Function WaitAny (tasks As Task(), millisecondsTimeout As Integer) As Integer

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

Índice de la tarea completada en el argumento de matriz tasks o -1 si se produjo el tiempo de espera.

Excepciones

Se Task ha eliminado .

El tasks argumento es null.

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

El tasks argumento contiene un elemento NULL.

Se aplica a

WaitAny(Task[], CancellationToken)

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

public:
 static int WaitAny(cli::array <System::Threading::Tasks::Task ^> ^ tasks, System::Threading::CancellationToken cancellationToken);
public static int WaitAny(System.Threading.Tasks.Task[] tasks, System.Threading.CancellationToken cancellationToken);
static member WaitAny : System.Threading.Tasks.Task[] * System.Threading.CancellationToken -> int
Public Shared Function WaitAny (tasks As Task(), cancellationToken As CancellationToken) As Integer

Parámetros

tasks
Task[]

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

cancellationToken
CancellationToken

Que CancellationToken se debe observar mientras se espera a que se complete una tarea.

Devoluciones

Índice de la tarea completada en el argumento de matriz tasks .

Excepciones

Se Task ha eliminado .

El tasks argumento es null.

El tasks argumento contiene un elemento NULL.

cancellationToken se canceló.

Se aplica a

WaitAny(Task[])

Espera a que cualquiera de los objetos proporcionados Task complete la ejecución.

public:
 static int WaitAny(... cli::array <System::Threading::Tasks::Task ^> ^ tasks);
public static int WaitAny(params System.Threading.Tasks.Task[] tasks);
static member WaitAny : System.Threading.Tasks.Task[] -> int
Public Shared Function WaitAny (ParamArray tasks As Task()) As Integer

Parámetros

tasks
Task[]

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

Devoluciones

Índice del objeto completado Task en la tasks matriz.

Excepciones

Se Task ha eliminado .

El tasks argumento es null.

El tasks argumento contiene un elemento NULL.

Ejemplos

En el ejemplo siguiente se inician cinco tareas, cada una de las cuales se suspende durante un mínimo de 50 milisegundos o un máximo de 1050 milisegundos. A continuación, el WaitAny método espera a que se complete cualquiera de las tareas. En el ejemplo se muestra el identificador de tarea de la tarea que finalizó la espera, así como el estado actual de todas las tareas.

using System;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task[] tasks = new Task[5];
      for (int ctr = 0; ctr <= 4; ctr++) {
         int factor = ctr;
         tasks[ctr] = Task.Run(() => Thread.Sleep(factor * 250 + 50));
      }
      int index = Task.WaitAny(tasks);
      Console.WriteLine("Wait ended because task #{0} completed.",
                        tasks[index].Id);
      Console.WriteLine("\nCurrent Status of Tasks:");
      foreach (var t in tasks)
         Console.WriteLine("   Task {0}: {1}", t.Id, t.Status);
   }
}
// The example displays output like the following:
//       Wait ended because task #1 completed.
//
//       Current Status of Tasks:
//          Task 1: RanToCompletion
//          Task 2: Running
//          Task 3: Running
//          Task 4: Running
//          Task 5: Running
open System.Threading
open System.Threading.Tasks

let tasks =
    [| for factor = 0 to 4 do
           Task.Run(fun () -> Thread.Sleep(factor * 250 + 50)) |]

let index = Task.WaitAny tasks
printfn $"Wait ended because task #{tasks[index].Id} completed."
printfn "\nCurrent Status of Tasks:"

for t in tasks do
    printfn $"   Task {t.Id}: {t.Status}"


// The example displays output like the following:
//       Wait ended because task #1 completed.
//
//       Current Status of Tasks:
//          Task 1: RanToCompletion
//          Task 2: Running
//          Task 3: Running
//          Task 4: Running
//          Task 5: Running
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim tasks(4) As Task
      For ctr As Integer = 0 To 4
         Dim factor As Integer = ctr
         tasks(ctr) = Task.Run(Sub() Thread.Sleep(factor * 250 + 50))
      Next
      Dim index As Integer = Task.WaitAny(tasks)

      Console.WriteLine("Wait ended because task #{0} completed.",
                        tasks(index).Id)
      Console.WriteLine()
      Console.WriteLine("Current Status of Tasks:")
      For Each t In tasks
         Console.WriteLine("   Task {0}: {1}", t.Id, t.Status)
      Next
   End Sub
End Module
' The example displays output like the following:
'       Wait ended because task #1 completed.
'
'       Current Status of Tasks:
'          Task 1: RanToCompletion
'          Task 2: Running
'          Task 3: Running
'          Task 4: Running
'          Task 5: Running

Se aplica a