Task.WaitAny Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Attende il completamento dell'esecuzione di uno qualsiasi degli oggetti Task forniti.
Overload
WaitAny(Task[], TimeSpan) |
Attende il completamento dell'esecuzione di uno qualsiasi degli oggetti Task forniti entro un intervallo di tempo specificato. |
WaitAny(Task[], Int32, CancellationToken) |
Attende il completamento dell'esecuzione di uno qualsiasi degli oggetti Task forniti entro un numero specificato di millisecondi o finché un token di annullamento non viene annullato. |
WaitAny(Task[], Int32) |
Attende il completamento dell'esecuzione di uno qualsiasi degli oggetti Task forniti entro un numero specificato di millisecondi. |
WaitAny(Task[], CancellationToken) |
Attende il completamento dell'esecuzione di uno qualsiasi degli oggetti Task forniti a meno che l'attesa non venga annullata. |
WaitAny(Task[]) |
Attende il completamento dell'esecuzione di uno qualsiasi degli oggetti Task forniti. |
WaitAny(Task[], TimeSpan)
- Origine:
- Task.cs
- Origine:
- Task.cs
- Origine:
- Task.cs
Attende il completamento dell'esecuzione di uno qualsiasi degli oggetti Task forniti entro un intervallo di tempo specificato.
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
Parametri
- timeout
- TimeSpan
Oggetto TimeSpan che rappresenta il numero di millisecondi di attesa oppure TimeSpan che rappresenta -1 millisecondi per un'attesa indefinita.
Restituisce
Indice dell'attività completata nell'argomento di matrice di tasks
, oppure -1 in caso di timeout.
Eccezioni
L'interfaccia Task è stata eliminata.
Il valore dell'argomento tasks
è null
.
La proprietà TotalMilliseconds dell'argomento timeout
è un numero negativo diverso da -1 che rappresenta un timeout indeterminato.
-oppure-
La TotalMilliseconds proprietà dell'argomento timeout
è maggiore di Int32.MaxValue.
L'argomento tasks
contiene un elemento null.
Si applica a
WaitAny(Task[], Int32, CancellationToken)
- Origine:
- Task.cs
- Origine:
- Task.cs
- Origine:
- Task.cs
Attende il completamento dell'esecuzione di uno qualsiasi degli oggetti Task forniti entro un numero specificato di millisecondi o finché un token di annullamento non viene annullato.
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
Parametri
- millisecondsTimeout
- Int32
Numero di millisecondi di attesa oppure Infinite (-1) per un'attesa indefinita.
- cancellationToken
- CancellationToken
Oggetto CancellationToken da osservare durante l'attesa del completamento di un'attività.
Restituisce
Indice dell'attività completata nell'argomento di matrice di tasks
, oppure -1 in caso di timeout.
Eccezioni
L'interfaccia Task è stata eliminata.
Il valore dell'argomento tasks
è null
.
millisecondsTimeout
è un numero negativo diverso da -1, che rappresenta un timeout infinito.
L'argomento tasks
contiene un elemento null.
Il parametro cancellationToken
è stato annullato.
Si applica a
WaitAny(Task[], Int32)
- Origine:
- Task.cs
- Origine:
- Task.cs
- Origine:
- Task.cs
Attende il completamento dell'esecuzione di uno qualsiasi degli oggetti Task forniti entro un numero specificato di millisecondi.
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
Parametri
- millisecondsTimeout
- Int32
Numero di millisecondi di attesa oppure Infinite (-1) per un'attesa indefinita.
Restituisce
Indice dell'attività completata nell'argomento di matrice di tasks
, oppure -1 in caso di timeout.
Eccezioni
L'interfaccia Task è stata eliminata.
Il valore dell'argomento tasks
è null
.
millisecondsTimeout
è un numero negativo diverso da -1, che rappresenta un timeout infinito.
L'argomento tasks
contiene un elemento null.
Si applica a
WaitAny(Task[], CancellationToken)
- Origine:
- Task.cs
- Origine:
- Task.cs
- Origine:
- Task.cs
Attende il completamento dell'esecuzione di uno qualsiasi degli oggetti Task forniti a meno che l'attesa non venga annullata.
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
Parametri
- cancellationToken
- CancellationToken
Oggetto CancellationToken da osservare durante l'attesa del completamento di un'attività.
Restituisce
Indice dell'attività completata nell'argomento di matrice di tasks
.
Eccezioni
L'interfaccia Task è stata eliminata.
Il valore dell'argomento tasks
è null
.
L'argomento tasks
contiene un elemento null.
Il parametro cancellationToken
è stato annullato.
Si applica a
WaitAny(Task[])
- Origine:
- Task.cs
- Origine:
- Task.cs
- Origine:
- Task.cs
Attende il completamento dell'esecuzione di uno qualsiasi degli oggetti Task forniti.
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
Parametri
Restituisce
Indice dell'oggetto Task completato nella matrice di tasks
.
Eccezioni
L'interfaccia Task è stata eliminata.
Il valore dell'argomento tasks
è null
.
L'argomento tasks
contiene un elemento null.
Esempio
L'esempio seguente avvia cinque attività, ognuna delle quali dorme per un minimo di 50 millisecondi o un massimo di 1.050 millisecondi. Il WaitAny metodo attende quindi il completamento di una delle attività. Nell'esempio viene visualizzato l'ID attività dell'attività che ha terminato l'attesa, nonché lo stato corrente di tutte le attività.
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