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
적용 대상
.NET