Task.WaitAny 메서드

정의

제공된 Task 개체 중 임의 개체의 실행이 완료되기를 기다립니다.

오버로드

WaitAny(Task[])

제공된 Task 개체 중 임의 개체의 실행이 완료되기를 기다립니다.

WaitAny(Task[], Int32)

모든 제공된 Task 개체가 지정된 시간(밀리초) 내에 실행을 완료할 때까지 기다립니다.

WaitAny(Task[], CancellationToken)

대기가 취소되지 않는 경우 제공된 모든 Task 개체가 실행을 완료하기를 기다립니다.

WaitAny(Task[], TimeSpan)

모든 제공된 Task 개체가 지정된 시간 간격 내에 실행을 완료할 때까지 기다립니다.

WaitAny(Task[], Int32, CancellationToken)

모든 제공된 Task 개체가 지정된 시간(밀리초) 내에 실행을 완료하기를 기다리거나 취소 토큰이 취소될 때까지 기다립니다.

WaitAny(Task[])

Source:
Task.cs
Source:
Task.cs
Source:
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 요소가 포함되어 있습니다.

예제

다음 예제에서는 각각 최소 50밀리초 또는 최대 1,050밀리초 동안 절전 모드인 5개의 작업을 시작합니다. 그런 다음 메서드는 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

적용 대상

WaitAny(Task[], Int32)

Source:
Task.cs
Source:
Task.cs
Source:
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)

Source:
Task.cs
Source:
Task.cs
Source:
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[], TimeSpan)

Source:
Task.cs
Source:
Task.cs
Source:
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이 아닌 음수입니다. -1은 무기한 시간 제한을 나타냅니다.

또는

TotalMilliseconds 인수의 timeout 속성이 Int32.MaxValue보다 큽습니다.

tasks 인수에 null 요소가 포함되어 있습니다.

적용 대상

WaitAny(Task[], Int32, CancellationToken)

Source:
Task.cs
Source:
Task.cs
Source:
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을 취소했습니다.

적용 대상