Task.WaitAny Methode

Definition

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[], CancellationToken)

Wartet, bis bereitgestellte Task-Objekte die Ausführung abschließen oder bis der Wartevorgang abgebrochen wird.

WaitAny(Task[], Int32)

Wartet darauf, dass bereitgestellte Task-Objekte innerhalb einer angegebenen Anzahl an Millisekunden 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[])

Wartet, bis eines der bereitgestellten Task-Objekte die Ausführung abschließt.

WaitAny(Task[], TimeSpan)

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

tasks
Task[]

Ein Array von Task-Instanzen, auf die gewartet werden soll.

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

Int32

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[], CancellationToken)

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

tasks
Task[]

Ein Array von Task-Instanzen, auf die gewartet werden soll.

cancellationToken
CancellationToken

Ein CancellationToken, das beim Warten auf den Abschluss einer Aufgabe überwacht werden soll.

Gibt zurück

Int32

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[], Int32)

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

tasks
Task[]

Ein Array von Task-Instanzen, auf die gewartet werden soll.

millisecondsTimeout
Int32

Die Anzahl von Millisekunden, die gewartet wird, oder Infinite (-1) für Warten ohne Timeout.

Gibt zurück

Int32

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[], 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.

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

tasks
Task[]

Ein Array von Task-Instanzen, auf die gewartet werden soll.

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

Int32

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[])

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

tasks
Task[]

Ein Array von Task-Instanzen, auf die gewartet werden soll.

Gibt zurück

Int32

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 Vorgänge gestartet, von denen jeweils mindestens 50 Millisekunden oder maximal 1.050 Millisekunden schlafen. Die WaitAny Methode wartet dann auf eine der Vorgänge, die abgeschlossen werden sollen. Im Beispiel wird die Vorgangs-ID der Aufgabe angezeigt, die die Wartezeit beendet hat, sowie den aktuellen Status aller Vorgänge.

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
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

Gilt für: