Task.WaitAny Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Ожидает завершения выполнения любого из указанных объектов Task.
Перегрузки
WaitAny(Task[], TimeSpan) |
Ожидает завершения выполнения любого из указанных отменяемых объектов Task в течение указанного временного интервала. |
WaitAny(Task[], Int32, CancellationToken) |
Ожидает завершения выполнения всех указанных объектов Task в течение указанного числа миллисекунд или до отмены токена отмены. |
WaitAny(Task[], Int32) |
Ожидает завершения выполнения любого из указанных объектов Task в течение указанного числа миллисекунд. |
WaitAny(Task[], CancellationToken) |
Ожидает завершения выполнения всех указанных объектов Task, пока ожидание не будет отменено. |
WaitAny(Task[]) |
Ожидает завершения выполнения любого из указанных объектов Task. |
WaitAny(Task[], TimeSpan)
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
Ожидает завершения выполнения любого из указанных отменяемых объектов Task в течение указанного временного интервала.
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
Параметры
- timeout
- TimeSpan
Период TimeSpan, представляющий время ожидания в миллисекундах, или период TimeSpan, представляющий -1 миллисекунду для неограниченного ожидания.
Возвращаемое значение
Индекс завершенной задачи в аргументе-массиве tasks
или -1, если истекло время ожидания.
Исключения
Объект Task удален.
Аргумент tasks
имеет значение null
.
Параметр TotalMilliseconds аргумента timeout
является отрицательным числом, отличающимся от -1, которое представляет неограниченное время ожидания.
-или-
Свойство TotalMilliseconds аргумента timeout
больше Int32.MaxValue.
Аргумент tasks
содержит элемент NULL.
Применяется к
WaitAny(Task[], Int32, CancellationToken)
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
Ожидает завершения выполнения всех указанных объектов Task в течение указанного числа миллисекунд или до отмены токена отмены.
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
Параметры
- millisecondsTimeout
- Int32
Время ожидания в миллисекундах или функция Infinite (-1) в случае неограниченного времени ожидания.
- cancellationToken
- CancellationToken
Токен CancellationToken, который нужно контролировать во время ожидания выполнения задачи.
Возвращаемое значение
Индекс завершенной задачи в аргументе-массиве tasks
или -1, если истекло время ожидания.
Исключения
Объект Task удален.
Аргумент tasks
имеет значение null
.
Параметр millisecondsTimeout
является отрицательным числом, отличным от –1, что означает бесконечное время ожидания.
Аргумент tasks
содержит элемент NULL.
Объект cancellationToken
отменен.
Применяется к
WaitAny(Task[], Int32)
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
Ожидает завершения выполнения любого из указанных объектов Task в течение указанного числа миллисекунд.
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
Параметры
- millisecondsTimeout
- Int32
Время ожидания в миллисекундах или функция Infinite (-1) в случае неограниченного времени ожидания.
Возвращаемое значение
Индекс завершенной задачи в аргументе-массиве tasks
или -1, если истекло время ожидания.
Исключения
Объект Task удален.
Аргумент tasks
имеет значение null
.
Параметр millisecondsTimeout
является отрицательным числом, отличным от –1, что означает бесконечное время ожидания.
Аргумент tasks
содержит элемент NULL.
Применяется к
WaitAny(Task[], CancellationToken)
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
Ожидает завершения выполнения всех указанных объектов Task, пока ожидание не будет отменено.
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
Параметры
- cancellationToken
- CancellationToken
Токен CancellationToken, который нужно контролировать во время ожидания выполнения задачи.
Возвращаемое значение
Индекс завершенной задачи в аргументе-массиве tasks
.
Исключения
Объект Task удален.
Аргумент tasks
имеет значение null
.
Аргумент tasks
содержит элемент NULL.
Объект cancellationToken
отменен.
Применяется к
WaitAny(Task[])
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
Ожидает завершения выполнения любого из указанных объектов Task.
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
Параметры
Возвращаемое значение
Индекс завершенного объекта Task в массиве tasks
.
Исключения
Объект Task удален.
Аргумент tasks
имеет значение null
.
Аргумент tasks
содержит элемент NULL.
Примеры
В следующем примере запускается пять задач, каждая из которых переходит в спящий режим в течение не менее 50 миллисекунда или не более 1050 миллисекунда. Затем WaitAny метод ожидает завершения любой из задач. В примере отображается идентификатор задачи, которая завершила ожидание, а также текущее состояние всех задач.
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