Task.WaitAny Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wartet, bis eines der bereitgestellten Task-Objekte die Ausführung abschließt.
Überlädt
WaitAny(Task[], TimeSpan) |
Wartet darauf, dass bereitgestellte Task-Objekte, die abgebrochen werden können, innerhalb eines angegebenen Zeitintervalls vollständig ausgeführt werden. |
WaitAny(Task[], Int32, CancellationToken) |
Wartet darauf, dass bereitgestellte Task-Objekte innerhalb einer angegebenen Anzahl an Millisekunden oder vollständig ausgeführt werden, oder bis ein Abbruchtoken abgebrochen wird. |
WaitAny(Task[], Int32) |
Wartet darauf, dass bereitgestellte Task-Objekte innerhalb einer angegebenen Anzahl an Millisekunden vollständig ausgeführt werden. |
WaitAny(Task[], CancellationToken) |
Wartet, bis bereitgestellte Task-Objekte die Ausführung abschließen oder bis der Wartevorgang abgebrochen wird. |
WaitAny(Task[]) |
Wartet, bis eines der bereitgestellten Task-Objekte die Ausführung abschließt. |
WaitAny(Task[], TimeSpan)
- Quelle:
- Task.cs
- Quelle:
- Task.cs
- Quelle:
- Task.cs
Wartet darauf, dass bereitgestellte Task-Objekte, die abgebrochen werden können, innerhalb eines angegebenen Zeitintervalls vollständig ausgeführt werden.
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
Parameter
- timeout
- TimeSpan
Eine TimeSpan-Struktur, die die Anzahl der zu wartenden Millisekunden angibt, oder eine TimeSpan-Struktur, die -1 Millisekunden zum unendlichen Warten angibt.
Gibt zurück
Der Index der abgeschlossenen Aufgabe im tasks
-Arrayargument oder -1, wenn das Timeout aufgetreten ist.
Ausnahmen
Task wurde verworfen.
Das tasks
-Argument lautet null
.
Die TotalMilliseconds-Eigenschaft des timeout
-Arguments ist eine negative Zahl ungleich -1, was für ein unbegrenztes Zeitlimit steht.
- oder -
Die TotalMilliseconds Eigenschaft des timeout
Arguments ist größer als Int32.MaxValue.
Das tasks
-Argument enthält ein NULL-Element.
Gilt für:
WaitAny(Task[], Int32, CancellationToken)
- Quelle:
- Task.cs
- Quelle:
- Task.cs
- Quelle:
- Task.cs
Wartet darauf, dass bereitgestellte Task-Objekte innerhalb einer angegebenen Anzahl an Millisekunden oder vollständig ausgeführt werden, oder bis ein Abbruchtoken abgebrochen wird.
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
Parameter
- millisecondsTimeout
- Int32
Die Anzahl von Millisekunden, die gewartet wird, oder Infinite (-1) für Warten ohne Timeout.
- cancellationToken
- CancellationToken
Ein CancellationToken, das beim Warten auf den Abschluss einer Aufgabe überwacht werden soll.
Gibt zurück
Der Index der abgeschlossenen Aufgabe im tasks
-Arrayargument oder -1, wenn das Timeout aufgetreten ist.
Ausnahmen
Task wurde verworfen.
Das tasks
-Argument lautet null
.
millisecondsTimeout
ist eine negative Zahl, jedoch nicht -1, was einen unbeschränkten Timeout darstellt.
Das tasks
-Argument enthält ein NULL-Element.
Das cancellationToken
wurde abgebrochen.
Gilt für:
WaitAny(Task[], Int32)
- Quelle:
- Task.cs
- Quelle:
- Task.cs
- Quelle:
- Task.cs
Wartet darauf, dass bereitgestellte Task-Objekte innerhalb einer angegebenen Anzahl an Millisekunden vollständig ausgeführt werden.
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
Parameter
- millisecondsTimeout
- Int32
Die Anzahl von Millisekunden, die gewartet wird, oder Infinite (-1) für Warten ohne Timeout.
Gibt zurück
Der Index der abgeschlossenen Aufgabe im tasks
-Arrayargument oder -1, wenn das Timeout aufgetreten ist.
Ausnahmen
Task wurde verworfen.
Das tasks
-Argument lautet null
.
millisecondsTimeout
ist eine negative Zahl, jedoch nicht -1, was einen unbeschränkten Timeout darstellt.
Das tasks
-Argument enthält ein NULL-Element.
Gilt für:
WaitAny(Task[], CancellationToken)
- Quelle:
- Task.cs
- Quelle:
- Task.cs
- Quelle:
- Task.cs
Wartet, bis bereitgestellte Task-Objekte die Ausführung abschließen oder bis der Wartevorgang abgebrochen wird.
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
Parameter
- cancellationToken
- CancellationToken
Ein CancellationToken, das beim Warten auf den Abschluss einer Aufgabe überwacht werden soll.
Gibt zurück
Der Index der ausgeführten Aufgabe im tasks
-Arrayargument.
Ausnahmen
Task wurde verworfen.
Das tasks
-Argument lautet null
.
Das tasks
-Argument enthält ein NULL-Element.
Das cancellationToken
wurde abgebrochen.
Gilt für:
WaitAny(Task[])
- Quelle:
- Task.cs
- Quelle:
- Task.cs
- Quelle:
- Task.cs
Wartet, bis eines der bereitgestellten Task-Objekte die Ausführung abschließt.
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
Parameter
Gibt zurück
Der Index des abgeschlossenen Task-Objekts im tasks
-Array.
Ausnahmen
Task wurde verworfen.
Das tasks
-Argument lautet null
.
Das tasks
-Argument enthält ein NULL-Element.
Beispiele
Im folgenden Beispiel werden fünf Aufgaben gestartet, von denen jede mindestens 50 Millisekunden oder maximal 1.050 Millisekunden im Ruhezustand bleibt. Die WaitAny -Methode wartet dann, bis eine der Aufgaben abgeschlossen ist. Das Beispiel zeigt die Aufgaben-ID des Vorgangs an, der die Wartezeit beendet hat, sowie die aktuelle status aller Aufgaben.
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