This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can trysigning in orchanging directories.
Access to this page requires authorization. You can trychanging directories.
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Waits for any of the providedTask objects to complete execution.
| Name | Description |
|---|---|
| WaitAny(Task[], TimeSpan) | Waits for any of the providedTask objects to complete execution within a specified time interval. |
| WaitAny(Task[], Int32, CancellationToken) | Waits for any of the providedTask objects to complete execution within a specified number of milliseconds or until a cancellation token is cancelled. |
| WaitAny(Task[], Int32) | Waits for any of the providedTask objects to complete execution within a specified number of milliseconds. |
| WaitAny(Task[], CancellationToken) | Waits for any of the providedTask objects to complete execution unless the wait is cancelled. |
| WaitAny(Task[]) | Waits for any of the providedTask objects to complete execution. |
Waits for any of the providedTask objects to complete execution within a specified time interval.
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 -> intPublic Shared Function WaitAny (tasks As Task(), timeout As TimeSpan) As IntegerATimeSpan that represents the number of milliseconds to wait, or aTimeSpan that represents -1 milliseconds to wait indefinitely.
The index of the completed task in thetasks array argument, or -1 if the timeout occurred.
TheTask has been disposed.
Thetasks argument isnull.
TheTotalMilliseconds property of thetimeout argument is a negative number other than -1, which represents an infinite time-out.
-or-
TheTotalMilliseconds property of thetimeout argument is greater thanInt32.MaxValue.
Thetasks argument contains a null element.
Waits for any of the providedTask objects to complete execution within a specified number of milliseconds or until a cancellation token is cancelled.
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 -> intPublic Shared Function WaitAny (tasks As Task(), millisecondsTimeout As Integer, cancellationToken As CancellationToken) As IntegerACancellationToken to observe while waiting for a task to complete.
The index of the completed task in thetasks array argument, or -1 if the timeout occurred.
TheTask has been disposed.
Thetasks argument isnull.
millisecondsTimeout is a negative number other than -1, which represents an infinite time-out.
Thetasks argument contains a null element.
ThecancellationToken was canceled.
Waits for any of the providedTask objects to complete execution within a specified number of milliseconds.
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 -> intPublic Shared Function WaitAny (tasks As Task(), millisecondsTimeout As Integer) As IntegerThe index of the completed task in thetasks array argument, or -1 if the timeout occurred.
TheTask has been disposed.
Thetasks argument isnull.
millisecondsTimeout is a negative number other than -1, which represents an infinite time-out.
Thetasks argument contains a null element.
Waits for any of the providedTask objects to complete execution unless the wait is cancelled.
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 -> intPublic Shared Function WaitAny (tasks As Task(), cancellationToken As CancellationToken) As IntegerACancellationToken to observe while waiting for a task to complete.
The index of the completed task in thetasks array argument.
TheTask has been disposed.
Thetasks argument isnull.
Thetasks argument contains a null element.
ThecancellationToken was canceled.
Waits for any of the providedTask objects to complete execution.
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[] -> intPublic Shared Function WaitAny (ParamArray tasks As Task()) As IntegerThe index of the completedTask object in thetasks array.
TheTask has been disposed.
Thetasks argument isnull.
Thetasks argument contains a null element.
The following example launches five tasks, each of which sleeps for a minimum of 50 milliseconds or a maximum of 1,050 milliseconds. TheWaitAny method then waits for any of the tasks to complete. The example displays the task ID of the task that ended the wait, as well as the current status of all the tasks.
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: Runningopen System.Threadingopen System.Threading.Taskslet tasks = [| for factor = 0 to 4 do Task.Run(fun () -> Thread.Sleep(factor * 250 + 50)) |]let index = Task.WaitAny tasksprintfn $"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: RunningImports System.ThreadingImports System.Threading.TasksModule 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 SubEnd 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: RunningWas this page helpful?
Need help with this topic?
Want to try using Ask Learn to clarify or guide you through this topic?
Was this page helpful?
Want to try using Ask Learn to clarify or guide you through this topic?