Task.WaitAny メソッド

定義

指定したいずれかの Task オブジェクトの実行が完了するまで待機します。Waits for any of the provided Task objects to complete execution.

オーバーロード

WaitAny(Task[], TimeSpan)

提供されたいずれかの Task オブジェクトの実行が完了するまで、指定した時間間隔内の間、待機します。Waits for any of the provided Task objects to complete execution within a specified time interval.

WaitAny(Task[], Int32, CancellationToken)

指定したミリ秒数まで、または待機トークンが取り消されるまで、提供されたいずれかの Task オブジェクトの実行が完了するのを待機します。Waits for any of the provided Task objects to complete execution within a specified number of milliseconds or until a cancellation token is cancelled.

WaitAny(Task[], CancellationToken)

待機が取り消されない限り、指定したいずれかの Task オブジェクトの実行が完了するまで待機します。Waits for any of the provided Task objects to complete execution unless the wait is cancelled.

WaitAny(Task[], Int32)

提供されたいずれかの Task オブジェクトの実行が完了するまで、指定したミリ秒数以内の間、待機します。Waits for any of the provided Task objects to complete execution within a specified number of milliseconds.

WaitAny(Task[])

指定したいずれかの Task オブジェクトの実行が完了するまで待機します。Waits for any of the provided Task objects to complete execution.

WaitAny(Task[], TimeSpan)

提供されたいずれかの Task オブジェクトの実行が完了するまで、指定した時間間隔内の間、待機します。Waits for any of the provided Task objects to complete execution within a specified time interval.

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 インスタンスの配列。An array of Task instances on which to wait.

timeout
TimeSpan

待機するミリ秒数を表す TimeSpan。無制限に待機する場合は、-1 ミリ秒を表す TimeSpanA TimeSpan that represents the number of milliseconds to wait, or a TimeSpan that represents -1 milliseconds to wait indefinitely.

戻り値

Int32

tasks 配列引数内の完了したタスクのインデックス。タイムアウトが発生した場合は -1。The index of the completed task in the tasks array argument, or -1 if the timeout occurred.

例外

Task は破棄されています。The Task has been disposed.

tasks 引数が null です。The tasks argument is null.

timeout 引数の TotalMilliseconds プロパティは、-1 (無制限のタイムアウトを表す) 以外の負の数です。The TotalMilliseconds property of the timeout argument is a negative number other than -1, which represents an infinite time-out. または-or- timeout 引数の TotalMilliseconds プロパティが MaxValue より大きい値です。The TotalMilliseconds property of the timeout argument is greater than MaxValue.

tasks 引数に NULL 要素が含まれています。The tasks argument contains a null element.

適用対象

WaitAny(Task[], Int32, CancellationToken)

指定したミリ秒数まで、または待機トークンが取り消されるまで、提供されたいずれかの Task オブジェクトの実行が完了するのを待機します。Waits for any of the provided Task objects to complete execution within a specified number of milliseconds or until a cancellation token is cancelled.

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 インスタンスの配列。An array of Task instances on which to wait.

millisecondsTimeout
Int32

待機するミリ秒数。無制限に待機する場合は Infinite (-1)。The number of milliseconds to wait, or Infinite (-1) to wait indefinitely.

cancellationToken
CancellationToken

タスクの完了を待機しているときに監視する CancellationTokenA CancellationToken to observe while waiting for a task to complete.

戻り値

Int32

tasks 配列引数内の完了したタスクのインデックス。タイムアウトが発生した場合は -1。The index of the completed task in the tasks array argument, or -1 if the timeout occurred.

例外

Task は破棄されています。The Task has been disposed.

tasks 引数が null です。The tasks argument is null.

millisecondsTimeout は無限のタイムアウトを表す -1 以外の負の数です。millisecondsTimeout is a negative number other than -1, which represents an infinite time-out.

tasks 引数に NULL 要素が含まれています。The tasks argument contains a null element.

cancellationToken は取り消されました。The cancellationToken was canceled.

適用対象

WaitAny(Task[], CancellationToken)

待機が取り消されない限り、指定したいずれかの Task オブジェクトの実行が完了するまで待機します。Waits for any of the provided Task objects to complete execution unless the wait is cancelled.

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 インスタンスの配列。An array of Task instances on which to wait.

cancellationToken
CancellationToken

タスクの完了を待機しているときに監視する CancellationTokenA CancellationToken to observe while waiting for a task to complete.

戻り値

Int32

tasks 配列引数内の完了したタスクのインデックス。The index of the completed task in the tasks array argument.

例外

Task は破棄されています。The Task has been disposed.

tasks 引数が null です。The tasks argument is null.

tasks 引数に NULL 要素が含まれています。The tasks argument contains a null element.

cancellationToken は取り消されました。The cancellationToken was canceled.

適用対象

WaitAny(Task[], Int32)

提供されたいずれかの Task オブジェクトの実行が完了するまで、指定したミリ秒数以内の間、待機します。Waits for any of the provided Task objects to complete execution within a specified number of milliseconds.

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 インスタンスの配列。An array of Task instances on which to wait.

millisecondsTimeout
Int32

待機するミリ秒数。無制限に待機する場合は Infinite (-1)。The number of milliseconds to wait, or Infinite (-1) to wait indefinitely.

戻り値

Int32

tasks 配列引数内の完了したタスクのインデックス。タイムアウトが発生した場合は -1。The index of the completed task in the tasks array argument, or -1 if the timeout occurred.

例外

Task は破棄されています。The Task has been disposed.

tasks 引数が null です。The tasks argument is null.

millisecondsTimeout は無限のタイムアウトを表す -1 以外の負の数です。millisecondsTimeout is a negative number other than -1, which represents an infinite time-out.

tasks 引数に NULL 要素が含まれています。The tasks argument contains a null element.

適用対象

WaitAny(Task[])

指定したいずれかの Task オブジェクトの実行が完了するまで待機します。Waits for any of the provided Task objects to complete execution.

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 インスタンスの配列。An array of Task instances on which to wait.

戻り値

Int32

tasks 配列内の完了した Task オブジェクトのインデックス。The index of the completed Task object in the tasks array.

例外

Task は破棄されています。The Task has been disposed.

tasks 引数が null です。The tasks argument is null.

tasks 引数に NULL 要素が含まれています。The tasks argument contains a null element.

次の例では、5つのタスクを起動します。各タスクは最低50ミリ秒、または最大1050ミリ秒間スリープします。The following example launches five tasks, each of which sleeps for a minimum of 50 milliseconds or a maximum of 1,050 milliseconds. 次に、 WaitAny メソッドは、いずれかのタスクが完了するまで待機します。The WaitAny method then waits for any of the tasks to complete. この例では、待機を終了したタスクのタスク ID と、すべてのタスクの現在の状態が表示されます。The example displays the task ID of the task that ended the wait, as well as the current status of all the tasks.

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

適用対象