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

Параметры

tasks
Task[]

Массив экземпляров Task , на которых следует ждать.

timeout
TimeSpan

Значение TimeSpan , представляющее количество миллисекунда для ожидания, или значение TimeSpan , представляющее -1 миллисекундах, которые будут ждать неограниченное время.

Возвращаемое значение

Индекс завершенной задачи в аргументе массива tasks или -1, если произошло время ожидания.

Исключения

Он Task был удален.

Аргумент tasks имеет значение null.

Свойство TotalMilliseconds аргумента timeout — отрицательное число, отличное от -1, которое представляет бесконечное время ожидания.

–или–

Свойство TotalMilliseconds аргумента больше timeout.

Аргумент tasks содержит пустой элемент.

Применяется к

WaitAny(Task[], Int32, CancellationToken)

Исходный код:
Task.cs
Исходный код:
Task.cs
Исходный код:
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

Параметры

tasks
Task[]

Массив экземпляров Task , на которых следует ждать.

millisecondsTimeout
Int32

Количество миллисекунда, ожидающее или Infinite (-1) для ожидания на неопределенный срок.

cancellationToken
CancellationToken

Наблюдение CancellationToken за ожиданием завершения задачи.

Возвращаемое значение

Индекс завершенной задачи в аргументе массива tasks или -1, если произошло время ожидания.

Исключения

Он Task был удален.

Аргумент tasks имеет значение null.

millisecondsTimeout — отрицательное число, отличное от -1, которое представляет бесконечное время ожидания.

Аргумент tasks содержит пустой элемент.

Объект cancellationToken отменен.

Применяется к

WaitAny(Task[], Int32)

Исходный код:
Task.cs
Исходный код:
Task.cs
Исходный код:
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

Параметры

tasks
Task[]

Массив экземпляров Task , на которых следует ждать.

millisecondsTimeout
Int32

Количество миллисекунда, ожидающее или Infinite (-1) для ожидания на неопределенный срок.

Возвращаемое значение

Индекс завершенной задачи в аргументе массива tasks или -1, если произошло время ожидания.

Исключения

Он Task был удален.

Аргумент tasks имеет значение null.

millisecondsTimeout — отрицательное число, отличное от -1, которое представляет бесконечное время ожидания.

Аргумент tasks содержит пустой элемент.

Применяется к

WaitAny(Task[], CancellationToken)

Исходный код:
Task.cs
Исходный код:
Task.cs
Исходный код:
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

Параметры

tasks
Task[]

Массив экземпляров Task , на которых следует ждать.

cancellationToken
CancellationToken

Наблюдение CancellationToken за ожиданием завершения задачи.

Возвращаемое значение

Индекс завершенной задачи в аргументе массива tasks .

Исключения

Он Task был удален.

Аргумент tasks имеет значение null.

Аргумент tasks содержит пустой элемент.

Объект cancellationToken отменен.

Применяется к

WaitAny(Task[])

Исходный код:
Task.cs
Исходный код:
Task.cs
Исходный код:
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

Параметры

tasks
Task[]

Массив экземпляров Task , на которых следует ждать.

Возвращаемое значение

Индекс завершенного Task объекта в массиве tasks .

Исключения

Он Task был удален.

Аргумент tasks имеет значение null.

Аргумент tasks содержит пустой элемент.

Примеры

В следующем примере выполняется пять задач, каждая из которых выполняется в спящий режим не менее 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

Применяется к