Task.WaitAny Méthode

Définition

Attend que l’un des objets fournis Task termine l’exécution.

Surcharges

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

Attend que l’un des objets fournis Task termine l’exécution dans un nombre spécifié de millisecondes ou jusqu’à ce qu’un jeton d’annulation soit annulé.

WaitAny(Task[], TimeSpan)

Attend que l’un des objets fournis Task termine l’exécution dans un intervalle de temps spécifié.

WaitAny(Task[], Int32)

Attend que l’un des objets fournis Task termine l’exécution dans un nombre spécifié de millisecondes.

WaitAny(Task[], CancellationToken)

Attend que l’un des objets fournis Task termine l’exécution, sauf si l’attente est annulée.

WaitAny(Task[])

Attend que l’un des objets fournis Task termine l’exécution.

WaitAny(Task[], Int32, CancellationToken)

Attend que l’un des objets fournis Task termine l’exécution dans un nombre spécifié de millisecondes ou jusqu’à ce qu’un jeton d’annulation soit annulé.

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

Paramètres

tasks
Task[]

Tableau d’instances Task sur lesquelles attendre.

millisecondsTimeout
Int32

Nombre de millisecondes à attendre, ou Infinite (-1) d’attendre indéfiniment.

cancellationToken
CancellationToken

À CancellationToken observer en attendant qu’une tâche se termine.

Retours

Index de la tâche terminée dans l’argument tasks tableau ou -1 si le délai d’expiration s’est produit.

Exceptions

Il Task a été supprimé.

L’argument tasks est null.

millisecondsTimeout est un nombre négatif autre que -1, qui représente un délai d’attente infini.

L’argument tasks contient un élément Null.

Le cancellationToken a été annulé.

S’applique à

WaitAny(Task[], TimeSpan)

Attend que l’un des objets fournis Task termine l’exécution dans un intervalle de temps spécifié.

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

Paramètres

tasks
Task[]

Tableau d’instances Task sur lesquelles attendre.

timeout
TimeSpan

Qui TimeSpan représente le nombre de millisecondes à attendre, ou qui TimeSpan représente -1 millisecondes pour attendre indéfiniment.

Retours

Index de la tâche terminée dans l’argument tasks tableau ou -1 si le délai d’expiration s’est produit.

Exceptions

Il Task a été supprimé.

L’argument tasks est null.

La TotalMilliseconds propriété de l’argument timeout est un nombre négatif autre que -1, qui représente un délai d’attente infini.

-ou-

La TotalMilliseconds propriété de l’argument timeout est supérieure à Int32.MaxValue.

L’argument tasks contient un élément Null.

S’applique à

WaitAny(Task[], Int32)

Attend que l’un des objets fournis Task termine l’exécution dans un nombre spécifié de millisecondes.

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

Paramètres

tasks
Task[]

Tableau d’instances Task sur lesquelles attendre.

millisecondsTimeout
Int32

Nombre de millisecondes à attendre, ou Infinite (-1) d’attendre indéfiniment.

Retours

Index de la tâche terminée dans l’argument tasks tableau ou -1 si le délai d’expiration s’est produit.

Exceptions

Il Task a été supprimé.

L’argument tasks est null.

millisecondsTimeout est un nombre négatif autre que -1, qui représente un délai d’attente infini.

L’argument tasks contient un élément Null.

S’applique à

WaitAny(Task[], CancellationToken)

Attend que l’un des objets fournis Task termine l’exécution, sauf si l’attente est annulée.

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

Paramètres

tasks
Task[]

Tableau d’instances Task sur lesquelles attendre.

cancellationToken
CancellationToken

À CancellationToken observer en attendant qu’une tâche se termine.

Retours

Index de la tâche terminée dans l’argument tasks tableau.

Exceptions

Il Task a été supprimé.

L’argument tasks est null.

L’argument tasks contient un élément Null.

Le cancellationToken a été annulé.

S’applique à

WaitAny(Task[])

Attend que l’un des objets fournis Task termine l’exécution.

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

Paramètres

tasks
Task[]

Tableau d’instances Task sur lesquelles attendre.

Retours

Index de l’objet terminé Task dans le tasks tableau.

Exceptions

Il Task a été supprimé.

L’argument tasks est null.

L’argument tasks contient un élément Null.

Exemples

L’exemple suivant lance cinq tâches, chacune d’elles étant en veille pendant un minimum de 50 millisecondes ou un maximum de 1 050 millisecondes. La WaitAny méthode attend ensuite la fin de l’une des tâches. L’exemple affiche l’ID de tâche de la tâche qui a terminé l’attente, ainsi que l’état actuel de toutes les tâches.

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

S’applique à