Task.WaitAny Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Čeká na dokončení provádění některého ze zadaných Task objektů.
Přetížení
WaitAny(Task[], TimeSpan) |
Čeká na dokončení spuštění některého ze zadaných Task objektů v zadaném časovém intervalu. |
WaitAny(Task[], Int32, CancellationToken) |
Čeká na dokončení spuštění některého ze zadaných Task objektů v zadaném počtu milisekund nebo na zrušení tokenu zrušení. |
WaitAny(Task[], Int32) |
Čeká na dokončení spuštění některého ze zadaných Task objektů v zadaném počtu milisekund. |
WaitAny(Task[], CancellationToken) |
Čeká na dokončení provádění některého ze zadaných Task objektů, pokud není čekání zrušeno. |
WaitAny(Task[]) |
Čeká na dokončení provádění některého ze zadaných Task objektů. |
WaitAny(Task[], TimeSpan)
- Zdroj:
- Task.cs
- Zdroj:
- Task.cs
- Zdroj:
- Task.cs
Čeká na dokončení spuštění některého ze zadaných Task objektů v zadaném časovém intervalu.
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
Parametry
- timeout
- TimeSpan
Jedná TimeSpan se o počet milisekund, které se mají čekat, nebo TimeSpan hodnota představující -1 milisekund, která má čekat na dobu neurčitou.
Návraty
Index dokončeného úkolu v argumentu tasks
pole nebo -1, pokud došlo k vypršení časového limitu.
Výjimky
Byla Task odstraněna.
Argument tasks
je null
.
Vlastnost TotalMilliseconds argumentu timeout
je záporné číslo jiné než -1, které představuje nekonečný časový limit.
-nebo-
Vlastnost TotalMilliseconds argumentu timeout
je větší než Int32.MaxValue.
Argument tasks
obsahuje prvek null.
Platí pro
WaitAny(Task[], Int32, CancellationToken)
- Zdroj:
- Task.cs
- Zdroj:
- Task.cs
- Zdroj:
- Task.cs
Čeká na dokončení spuštění některého ze zadaných Task objektů v zadaném počtu milisekund nebo na zrušení tokenu zrušení.
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
Parametry
- millisecondsTimeout
- Int32
Počet milisekund, které se mají čekat, nebo Infinite (-1) čekat na neomezenou dobu.
- cancellationToken
- CancellationToken
A CancellationToken , které se mají sledovat při čekání na dokončení úkolu.
Návraty
Index dokončeného úkolu v argumentu tasks
pole nebo -1, pokud došlo k vypršení časového limitu.
Výjimky
Byla Task odstraněna.
Argument tasks
je null
.
millisecondsTimeout
je záporné číslo jiné než -1, které představuje nekonečný časový limit.
Argument tasks
obsahuje prvek null.
Akce cancellationToken
byla zrušena.
Platí pro
WaitAny(Task[], Int32)
- Zdroj:
- Task.cs
- Zdroj:
- Task.cs
- Zdroj:
- Task.cs
Čeká na dokončení spuštění některého ze zadaných Task objektů v zadaném počtu milisekund.
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
Parametry
- millisecondsTimeout
- Int32
Počet milisekund, které se mají čekat, nebo Infinite (-1) čekat na neomezenou dobu.
Návraty
Index dokončeného úkolu v argumentu tasks
pole nebo -1, pokud došlo k vypršení časového limitu.
Výjimky
Byla Task odstraněna.
Argument tasks
je null
.
millisecondsTimeout
je záporné číslo jiné než -1, které představuje nekonečný časový limit.
Argument tasks
obsahuje prvek null.
Platí pro
WaitAny(Task[], CancellationToken)
- Zdroj:
- Task.cs
- Zdroj:
- Task.cs
- Zdroj:
- Task.cs
Čeká na dokončení provádění některého ze zadaných Task objektů, pokud není čekání zrušeno.
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
Parametry
- cancellationToken
- CancellationToken
A CancellationToken , které se mají sledovat při čekání na dokončení úkolu.
Návraty
Index dokončeného úkolu v argumentu tasks
pole.
Výjimky
Byla Task odstraněna.
Argument tasks
je null
.
Argument tasks
obsahuje prvek null.
Akce cancellationToken
byla zrušena.
Platí pro
WaitAny(Task[])
- Zdroj:
- Task.cs
- Zdroj:
- Task.cs
- Zdroj:
- Task.cs
Čeká na dokončení provádění některého ze zadaných Task objektů.
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
Parametry
Návraty
Index dokončeného Task objektu tasks
v poli.
Výjimky
Byla Task odstraněna.
Argument tasks
je null
.
Argument tasks
obsahuje prvek null.
Příklady
Následující příklad spustí pět úkolů, z nichž každá je v režimu spánku minimálně 50 milisekund nebo maximálně 1 050 milisekund. Metoda WaitAny pak počká na dokončení některého z úkolů. Příklad zobrazuje ID úkolu, který ukončil čekání, a také aktuální stav všech úkolů.
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