Task.WaitAny Methode

Definitie

Wacht tot een van de opgegeven Task objecten de uitvoering heeft voltooid.

Overloads

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

Wacht tot een van de opgegeven Task objecten de uitvoering binnen een opgegeven aantal milliseconden heeft voltooid of totdat een annuleringstoken wordt geannuleerd.

WaitAny(Task[], TimeSpan)

Wacht tot een van de opgegeven Task objecten de uitvoering binnen een opgegeven tijdsinterval heeft voltooid.

WaitAny(Task[], Int32)

Wacht tot een van de opgegeven Task objecten de uitvoering binnen een opgegeven aantal milliseconden heeft voltooid.

WaitAny(Task[], CancellationToken)

Wacht tot een van de opgegeven Task objecten de uitvoering heeft voltooid, tenzij de wachttijd is geannuleerd.

WaitAny(Task[])

Wacht tot een van de opgegeven Task objecten de uitvoering heeft voltooid.

WaitAny(Task[], Int32, CancellationToken)

Wacht tot een van de opgegeven Task objecten de uitvoering binnen een opgegeven aantal milliseconden heeft voltooid of totdat een annuleringstoken wordt geannuleerd.

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

Parameters

tasks
Task[]

Een matrix met Task exemplaren waarop moet worden gewacht.

millisecondsTimeout
Int32

Het aantal milliseconden dat moet worden gewacht, of Infinite (-1) om voor onbepaalde tijd te wachten.

cancellationToken
CancellationToken

Een CancellationToken om te observeren terwijl wordt gewacht tot een taak is voltooid.

Retouren

De index van de voltooide taak in het tasks matrixargument of -1 als de time-out is opgetreden.

Uitzonderingen

De Task is verwijderd.

Het tasks argument is null.

millisecondsTimeout is een ander negatief getal dan -1, dat een oneindige time-out vertegenwoordigt.

Het tasks argument bevat een null-element.

De cancellationToken is geannuleerd.

Van toepassing op

WaitAny(Task[], TimeSpan)

Wacht tot een van de opgegeven Task objecten de uitvoering binnen een opgegeven tijdsinterval heeft voltooid.

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

Parameters

tasks
Task[]

Een matrix met Task exemplaren waarop moet worden gewacht.

timeout
TimeSpan

Een TimeSpan die het aantal milliseconden aangeeft dat moet worden gewacht, of een TimeSpan waarde die -1 milliseconden vertegenwoordigt om voor onbepaalde tijd te wachten.

Retouren

De index van de voltooide taak in het tasks matrixargument of -1 als de time-out is opgetreden.

Uitzonderingen

De Task is verwijderd.

Het tasks argument is null.

De TotalMilliseconds eigenschap van het timeout argument is een ander negatief getal dan -1, dat een oneindige time-out vertegenwoordigt.

– of –

De TotalMilliseconds eigenschap van het timeout argument is groter dan Int32.MaxValue.

Het tasks argument bevat een null-element.

Van toepassing op

WaitAny(Task[], Int32)

Wacht tot een van de opgegeven Task objecten de uitvoering binnen een opgegeven aantal milliseconden heeft voltooid.

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

Parameters

tasks
Task[]

Een matrix met Task exemplaren waarop moet worden gewacht.

millisecondsTimeout
Int32

Het aantal milliseconden dat moet worden gewacht, of Infinite (-1) om voor onbepaalde tijd te wachten.

Retouren

De index van de voltooide taak in het tasks matrixargument of -1 als de time-out is opgetreden.

Uitzonderingen

De Task is verwijderd.

Het tasks argument is null.

millisecondsTimeout is een ander negatief getal dan -1, dat een oneindige time-out vertegenwoordigt.

Het tasks argument bevat een null-element.

Van toepassing op

WaitAny(Task[], CancellationToken)

Wacht tot een van de opgegeven Task objecten de uitvoering heeft voltooid, tenzij de wachttijd is geannuleerd.

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

Parameters

tasks
Task[]

Een matrix met Task exemplaren waarop moet worden gewacht.

cancellationToken
CancellationToken

Een CancellationToken om te observeren terwijl wordt gewacht tot een taak is voltooid.

Retouren

De index van de voltooide taak in het tasks matrixargument.

Uitzonderingen

De Task is verwijderd.

Het tasks argument is null.

Het tasks argument bevat een null-element.

De cancellationToken is geannuleerd.

Van toepassing op

WaitAny(Task[])

Wacht tot een van de opgegeven Task objecten de uitvoering heeft voltooid.

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

Parameters

tasks
Task[]

Een matrix met Task exemplaren waarop moet worden gewacht.

Retouren

De index van het voltooide Task object in de tasks matrix.

Uitzonderingen

De Task is verwijderd.

Het tasks argument is null.

Het tasks argument bevat een null-element.

Voorbeelden

In het volgende voorbeeld worden vijf taken gestart, die elk gedurende minimaal 50 milliseconden of maximaal 1050 milliseconden slapen. De WaitAny methode wacht vervolgens tot een van de taken is voltooid. In het voorbeeld wordt de taak-id weergegeven van de taak die het wachten heeft beëindigd, evenals de huidige status van alle taken.

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

Van toepassing op