Task.WaitAny 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
제공된 Task 개체 중 임의 개체의 실행이 완료되기를 기다립니다.
오버로드
| WaitAny(Task[], TimeSpan) |
모든 제공된 Task 개체가 지정된 시간 간격 내에 실행을 완료할 때까지 기다립니다. |
| WaitAny(Task[], Int32, CancellationToken) |
모든 제공된 Task 개체가 지정된 시간(밀리초) 내에 실행을 완료하기를 기다리거나 취소 토큰이 취소될 때까지 기다립니다. |
| WaitAny(Task[], Int32) |
모든 제공된 Task 개체가 지정된 시간(밀리초) 내에 실행을 완료할 때까지 기다립니다. |
| WaitAny(Task[], CancellationToken) |
대기가 취소되지 않는 경우 제공된 모든 Task 개체가 실행을 완료하기를 기다립니다. |
| WaitAny(Task[]) |
제공된 Task 개체 중 임의 개체의 실행이 완료되기를 기다립니다. |
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 배열 인수의 완료된 작업 인덱스이거나, 제한 시간이 초과되었으면 -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
매개 변수
- cancellationToken
- CancellationToken
작업이 완료되기를 기다리는 동안 확인할 CancellationToken입니다.
반환
tasks 배열 인수의 완료된 작업 인덱스이거나, 제한 시간이 초과되었으면 -1입니다.
예외
Task가 삭제된 경우
tasks 인수가 null인 경우
millisecondsTimeout이 시간 제한 없음을 나타내는 -1 이외의 음수인 경우
tasks 인수에 null 요소가 포함되어 있습니다.
cancellationToken을 취소했습니다.
적용 대상
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 배열 인수의 완료된 작업 인덱스이거나, 제한 시간이 초과되었으면 -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
매개 변수
- cancellationToken
- CancellationToken
작업이 완료되기를 기다리는 동안 확인할 CancellationToken입니다.
반환
tasks 배열 인수에서 완료된 작업의 인덱스입니다.
예외
Task가 삭제된 경우
tasks 인수가 null인 경우
tasks 인수에 null 요소가 포함되어 있습니다.
cancellationToken을 취소했습니다.
적용 대상
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 인수가 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