命名空间:
System.Threading.Tasks
程序集:
mscorlib.dll, netstandard.dll
等待所有提供的 Task 对象完成执行过程。
WaitAll(Task[]) | 等待提供的所有 Task 对象完成执行过程。 |
WaitAll(Task[], Int32) | 等待所有提供的 Task 在指定的毫秒数内完成执行。 |
WaitAll(Task[], CancellationToken) | 等待提供的所有 Task 对象完成执行过程(除非取消等待)。 |
WaitAll(Task[], TimeSpan) | 等待所有提供的可取消 Task 对象在指定的时间间隔内完成执行。 |
WaitAll(Task[], Int32, CancellationToken) | 等待提供的所有 Task 对象在指定的毫秒数内完成执行,或等到取消等待。 |
等待提供的所有 Task 对象完成执行过程。
C#复制
public static void WaitAll (params System.Threading.Tasks.Task[] tasks);
参数
tasks
Task[]
要等待的 Task 实例的数组。
例外
ObjectDisposedException
tasks
中的一个或多个 Task 对象已释放。
ArgumentNullException
tasks
参数为 null
。
ArgumentException
tasks
参数包含一个 null 元素。
AggregateException
至少一个 Task 实例已取消。 如果任务取消,则 AggregateException 异常在其 InnerExceptions 集合中包含 OperationCanceledException 异常。
- 或 - 在至少一个 Task 实例的执行过程中引发了异常。
下面的示例启动了10个任务,其中每个任务都作为状态对象传递了一个索引。 索引为2到5的任务引发异常。 对方法的调用 WaitAll 会包装对象中的所有异常 AggregateException ,并将其传播到调用线程。
C#复制
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
class Example
{
static void Main()
{
var tasks = new List>();
// Define a delegate that prints and returns the system tick count
Func
.NET 6 和其他版本
等待所有提供的 Task 在指定的毫秒数内完成执行。
C#复制
public static bool WaitAll (System.Threading.Tasks.Task[] tasks, int millisecondsTimeout);
参数
tasks
Task[]
要等待的 Task 实例的数组。
millisecondsTimeout
Int32
等待的毫秒数,或为 Infinite (-1),表示无限期等待。
返回
Boolean
如果在分配的时间内所有 true
实例都已完成执行,则为 Task;否则为 false
。
例外
ObjectDisposedException
tasks
中的一个或多个 Task 对象已释放。
ArgumentNullException
tasks
参数为 null
。
AggregateException
至少一个 Task 实例已取消。 如果任务已取消,则 AggregateException 在其 InnerExceptions 集合中包含 OperationCanceledException。
- 或 - 在至少一个 Task 实例的执行过程中引发了异常。
ArgumentOutOfRangeException
millisecondsTimeout
是一个非 -1 的负数,而 -1 表示无限期超时。
ArgumentException
tasks
参数包含一个 null 元素。
.NET 6 和其他版本
等待提供的所有 Task 对象完成执行过程(除非取消等待)。
C#复制
public static void WaitAll (System.Threading.Tasks.Task[] tasks, System.Threading.CancellationToken cancellationToken);
参数
tasks
Task[]
要等待的 Task 实例的数组。
cancellationToken
CancellationToken
等待任务完成期间要观察的 CancellationToken。
例外
OperationCanceledException
已取消 cancellationToken
。
ArgumentNullException
tasks
参数为 null
。
AggregateException
至少一个 Task 实例已取消。 如果任务已取消,则 AggregateException 在其 InnerExceptions 集合中包含 OperationCanceledException。
- 或 - 在至少一个 Task 实例的执行过程中引发了异常。
ArgumentException
tasks
参数包含一个 null 元素。
ObjectDisposedException
tasks
中的一个或多个 Task 对象已释放。
cancellationToken
参数用于取消等待操作。 取消任务是一种不同的操作,并由发出信号,如上所述 AggregateException 。
.NET 6 和其他版本
等待所有提供的可取消 Task 对象在指定的时间间隔内完成执行。
C#复制
public static bool WaitAll (System.Threading.Tasks.Task[] tasks, TimeSpan timeout);
参数
tasks
Task[]
要等待的 Task 实例的数组。
timeout
TimeSpan
表示等待毫秒数的 TimeSpan,或表示 -1 毫秒(无限期等待)的 TimeSpan。
返回
Boolean
如果在分配的时间内所有 true
实例都已完成执行,则为 Task;否则为 false
。
例外
ObjectDisposedException
tasks
中的一个或多个 Task 对象已释放。
ArgumentNullException
tasks
参数为 null
。
AggregateException
至少一个 Task 实例已取消。 如果任务已取消,则 AggregateException 在其 InnerExceptions 集合中包含 OperationCanceledException。
- 或 - 在至少一个 Task 实例的执行过程中引发了异常。
ArgumentOutOfRangeException
timeout
为 -1 毫秒以外的负数,表示无限期超时。 - 或 - timeout
大于 MaxValue。
ArgumentException
tasks
参数包含一个 null 元素。
.NET 6 和其他版本
等待提供的所有 Task 对象在指定的毫秒数内完成执行,或等到取消等待。
C#复制
public static bool WaitAll (System.Threading.Tasks.Task[] tasks, int millisecondsTimeout, System.Threading.CancellationToken cancellationToken);
参数
tasks
Task[]
要等待的 Task 实例的数组。
millisecondsTimeout
Int32
等待的毫秒数,或为 Infinite (-1),表示无限期等待。
cancellationToken
CancellationToken
等待任务完成期间要观察的 CancellationToken。
返回
Boolean
如果在分配的时间内所有 true
实例都已完成执行,则为 Task;否则为 false
。
例外
ObjectDisposedException
tasks
中的一个或多个 Task 对象已释放。
ArgumentNullException
tasks
参数为 null
。
AggregateException
至少一个 Task 实例已取消。 如果任务已取消,则 AggregateException 在其 InnerExceptions 集合中包含 OperationCanceledException。
- 或 - 在至少一个 Task 实例的执行过程中引发了异常。
ArgumentOutOfRangeException
millisecondsTimeout
是一个非 -1 的负数,而 -1 表示无限期超时。
ArgumentException
tasks
参数包含一个 null 元素。
OperationCanceledException
已取消 cancellationToken
。
cancellationToken
参数用于取消等待操作。 取消任务是一种不同的操作,并按上面所述的方式发出通知 AggregateException 。
.NET 6 和其他版本