Task.WaitAny Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
- 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
- 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
- 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
- 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
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