Task.WaitAny Metodo

Definizione

Attende il completamento dell'esecuzione di uno degli oggetti forniti Task .

Overload

Nome Descrizione
WaitAny(Task[], Int32, CancellationToken)

Attende il completamento dell'esecuzione di uno degli oggetti forniti Task entro un numero specificato di millisecondi o fino a quando non viene annullato un token di annullamento.

WaitAny(Task[], TimeSpan)

Attende il completamento dell'esecuzione di uno degli oggetti forniti Task entro un intervallo di tempo specificato.

WaitAny(Task[], Int32)

Attende il completamento dell'esecuzione di uno degli oggetti forniti Task entro un numero specificato di millisecondi.

WaitAny(Task[], CancellationToken)

Attende il completamento dell'esecuzione di uno degli oggetti forniti Task , a meno che l'attesa non venga annullata.

WaitAny(Task[])

Attende il completamento dell'esecuzione di uno degli oggetti forniti Task .

WaitAny(Task[], Int32, CancellationToken)

Attende il completamento dell'esecuzione di uno degli oggetti forniti Task entro un numero specificato di millisecondi o fino a quando non viene annullato un token di annullamento.

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

tasks
Task[]

Matrice di Task istanze in cui attendere.

millisecondsTimeout
Int32

Numero di millisecondi di attesa o Infinite (-1) di attesa illimitata.

cancellationToken
CancellationToken

Oggetto CancellationToken da osservare durante l'attesa del completamento di un'attività.

Valori restituiti

Indice dell'attività completata nell'argomento tasks della matrice o -1 se si è verificato il timeout.

Eccezioni

L'oggetto Task è stato eliminato.

L'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[], TimeSpan)

Attende il completamento dell'esecuzione di uno degli oggetti forniti Task 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

tasks
Task[]

Matrice di Task istanze in cui attendere.

timeout
TimeSpan

Oggetto TimeSpan che rappresenta il numero di millisecondi di attesa o un oggetto TimeSpan che rappresenta -1 millisecondi di attesa illimitata.

Valori restituiti

Indice dell'attività completata nell'argomento tasks della matrice o -1 se si è verificato il timeout.

Eccezioni

L'oggetto Task è stato eliminato.

L'argomento tasks è null.

La TotalMilliseconds proprietà dell'argomento timeout è un numero negativo diverso da -1, che rappresenta un timeout infinito.

oppure

La TotalMilliseconds proprietà dell'argomento timeout è maggiore di Int32.MaxValue.

L'argomento tasks contiene un elemento Null.

Si applica a

WaitAny(Task[], Int32)

Attende il completamento dell'esecuzione di uno degli oggetti forniti Task 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

tasks
Task[]

Matrice di Task istanze in cui attendere.

millisecondsTimeout
Int32

Numero di millisecondi di attesa o Infinite (-1) di attesa illimitata.

Valori restituiti

Indice dell'attività completata nell'argomento tasks della matrice o -1 se si è verificato il timeout.

Eccezioni

L'oggetto Task è stato eliminato.

L'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)

Attende il completamento dell'esecuzione di uno degli oggetti forniti Task , 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

tasks
Task[]

Matrice di Task istanze in cui attendere.

cancellationToken
CancellationToken

Oggetto CancellationToken da osservare durante l'attesa del completamento di un'attività.

Valori restituiti

Indice dell'attività completata nell'argomento tasks matrice.

Eccezioni

L'oggetto Task è stato eliminato.

L'argomento tasks è null.

L'argomento tasks contiene un elemento Null.

Il parametro cancellationToken è stato annullato.

Si applica a

WaitAny(Task[])

Attende il completamento dell'esecuzione di uno degli oggetti forniti Task .

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

tasks
Task[]

Matrice di Task istanze in cui attendere.

Valori restituiti

Indice dell'oggetto completato Task nella tasks matrice.

Eccezioni

L'oggetto Task è stato eliminato.

L'argomento tasks è null.

L'argomento tasks contiene un elemento Null.

Esempio

L'esempio seguente avvia cinque attività, ognuna delle quali è in sospensione 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

Si applica a