Task.WaitAny Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Espera a que se complete la ejecución de cualquiera de los objetos Task proporcionados.
Sobrecargas
WaitAny(Task[], TimeSpan) |
Espera a que se complete la ejecución de cualquier objeto Task proporcionado en un intervalo de tiempo especificado. |
WaitAny(Task[], Int32, CancellationToken) |
Espera a que cualquiera de los objetos Task proporcionados complete la ejecución dentro de un número especificado de milisegundos o hasta que se cancele un token de cancelación. |
WaitAny(Task[], Int32) |
Espera a que cualquiera de los objetos Task que se hayan proporcionado complete su ejecución dentro de un número especificado de milisegundos. |
WaitAny(Task[], CancellationToken) |
Espera que se complete la ejecución de cualquiera de los objetos Task proporcionados, a menos que se cancele la espera. |
WaitAny(Task[]) |
Espera a que se complete la ejecución de cualquiera de los objetos Task proporcionados. |
WaitAny(Task[], TimeSpan)
- Source:
- Task.cs
- Source:
- Task.cs
- Source:
- Task.cs
Espera a que se complete la ejecución de cualquier objeto Task proporcionado en 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
- timeout
- TimeSpan
Estructura TimeSpan que representa el número de milisegundos de espera o estructura TimeSpan que representa -1 milisegundos para esperar indefinidamente.
Devoluciones
Índice de la tarea completada en la matriz especificada por el parámetro tasks
o -1 si se agotó el tiempo de espera.
Excepciones
Se ha eliminado Task.
El argumento tasks
es null
.
La propiedad TotalMilliseconds del argumento timeout
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 argumento tasks
contiene un elemento null.
Se aplica a
WaitAny(Task[], Int32, CancellationToken)
- Source:
- Task.cs
- Source:
- Task.cs
- Source:
- Task.cs
Espera a que cualquiera de los objetos Task proporcionados 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
- millisecondsTimeout
- Int32
Número de milisegundos de espera o Infinite (-1) para esperar indefinidamente.
- cancellationToken
- CancellationToken
Un CancellationToken que se observará mientras se espera a que se complete la tarea.
Devoluciones
Índice de la tarea completada en la matriz especificada por el parámetro tasks
o -1 si se agotó el tiempo de espera.
Excepciones
Se ha eliminado Task.
El argumento tasks
es null
.
millisecondsTimeout
es un número negativo distinto de-1, que representa un tiempo de espera infinito.
El argumento tasks
contiene un elemento null.
cancellationToken
se canceló.
Se aplica a
WaitAny(Task[], Int32)
- Source:
- Task.cs
- Source:
- Task.cs
- Source:
- Task.cs
Espera a que cualquiera de los objetos Task que se hayan proporcionado complete su 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
- millisecondsTimeout
- Int32
Número de milisegundos de espera o Infinite (-1) para esperar indefinidamente.
Devoluciones
Índice de la tarea completada en la matriz especificada por el parámetro tasks
o -1 si se agotó el tiempo de espera.
Excepciones
Se ha eliminado Task.
El argumento tasks
es null
.
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
WaitAny(Task[], CancellationToken)
- Source:
- Task.cs
- Source:
- Task.cs
- Source:
- Task.cs
Espera que se complete la ejecución de cualquiera de los objetos Task proporcionados, 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
- cancellationToken
- CancellationToken
Un CancellationToken que se observará mientras se espera a que se complete la tarea.
Devoluciones
Índice de la tarea completada en la matriz especificada por el parámetro tasks
.
Excepciones
Se ha eliminado Task.
El argumento tasks
es null
.
El argumento tasks
contiene un elemento null.
cancellationToken
se canceló.
Se aplica a
WaitAny(Task[])
- Source:
- Task.cs
- Source:
- Task.cs
- Source:
- Task.cs
Espera a que se complete la ejecución de cualquiera de los objetos Task proporcionados.
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
Devoluciones
Índice del objeto Task completado en la matriz tasks
.
Excepciones
Se ha eliminado Task.
El argumento tasks
es null
.
El argumento tasks
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 WaitAny continuación, el 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