次の方法で共有


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

パラメーター

tasks
Task[]

待機する Task インスタンスの配列。

timeout
TimeSpan

待機するミリ秒数を表す TimeSpan。無制限に待機する場合は、-1 ミリ秒を表す TimeSpan

戻り値

tasks 配列引数内の完了したタスクのインデックス。タイムアウトが発生した場合は -1。

例外

Task は破棄されています。

tasks 引数が null です。

timeout 引数の TotalMilliseconds プロパティは、-1 (無制限のタイムアウトを表す) 以外の負の数です。

または

TotalMilliseconds引数の プロパティが timeoutInt32.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

パラメーター

tasks
Task[]

待機する Task インスタンスの配列。

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

パラメーター

tasks
Task[]

待機する Task インスタンスの配列。

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

パラメーター

tasks
Task[]

待機する Task インスタンスの配列。

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

パラメーター

tasks
Task[]

待機する Task インスタンスの配列。

戻り値

tasks 配列内の完了した Task オブジェクトのインデックス。

例外

Task は破棄されています。

tasks 引数が null です。

tasks 引数に NULL 要素が含まれています。

次の例では、5 つのタスクを起動します。各タスクは、最低 50 ミリ秒または最大 1,050 ミリ秒でスリープ状態になります。 次に、 メソッドは WaitAny タスクが完了するまで待機します。 この例では、待機を終了したタスクのタスク ID と、すべてのタスクの現在の状態を表示します。

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

適用対象