Task.WaitAny 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
제공된 Task 개체가 실행을 완료할 때까지 기다립니다.
오버로드
| Name | Description |
|---|---|
| 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
- 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.
인수의 TotalMilliseconds 속성은 timeout 무한 제한 시간을 나타내는 -1 이외의 음수입니다.
-또는-
TotalMilliseconds 인수의 timeout 속성이 Int32.MaxValue보다 큰 경우
tasks 인수에 null 요소가 포함됩니다.
적용 대상
WaitAny(Task[], Int32, CancellationToken)
- Source:
- Task.cs
- Source:
- Task.cs
- 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 작업이 완료 될 때까지 기다리는 동안 관찰할 A입니다.
반품
배열 인수에서 tasks 완료된 작업의 인덱스이거나 시간 제한이 발생한 경우 -1.
예외
Task 삭제되었습니다.
인수는 tasks .입니다 null.
millisecondsTimeout 는 무한 제한 시간을 나타내는 -1 이외의 음수입니다.
tasks 인수에 null 요소가 포함됩니다.
cancellationToken을 취소했습니다.
적용 대상
WaitAny(Task[], Int32)
- Source:
- Task.cs
- Source:
- Task.cs
- 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
- 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 작업이 완료 될 때까지 기다리는 동안 관찰할 A입니다.
반품
배열 인수에서 완료된 작업의 인덱스 tasks 입니다.
예외
Task 삭제되었습니다.
인수는 tasks .입니다 null.
tasks 인수에 null 요소가 포함됩니다.
cancellationToken을 취소했습니다.
적용 대상
WaitAny(Task[])
- Source:
- Task.cs
- Source:
- Task.cs
- 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
매개 변수
반품
배열에서 완료된 Task 개체의 인덱스입니다 tasks .
예외
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