Task.WhenAll()
是 .NET 中的一个方法,用于并行执行多个异步任务,并在所有任务都完成后返回结果。这个方法接受一个 Task
对象的数组作为参数,并返回一个新的 Task
对象,该对象在所有输入任务完成后完成。
Task
,并在所有 Task
完成后返回。Task.WhenAll()
是一个静态方法,属于 System.Threading.Tasks
命名空间。Task.WhenAll()
。以下是一个简单的示例,展示如何使用 Task.WhenAll()
来并行执行多个异步任务:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// 创建三个异步任务
Task<int> task1 = Task.Run(() => LongRunningOperation(1));
Task<int> task2 = Task.Run(() => LongRunningOperation(2));
Task<int> task3 = Task.Run(() => LongRunningOperation(3));
// 使用 Task.WhenAll() 等待所有任务完成
Task<int[]> results = Task.WhenAll(task1, task2, task3);
// 获取并打印结果
int[] outcomes = await results;
foreach (int result in outcomes)
{
Console.WriteLine(result);
}
}
static int LongRunningOperation(int id)
{
// 模拟长时间运行的操作
Task.Delay(1000 * id).Wait();
return id * 10;
}
}
Task.WhenAll()
也会被取消。可以使用 CancellationToken
来控制任务的取消。Task.WhenAll()
会立即完成并抛出该异常。可以使用 try-catch
块来捕获和处理异常。请注意,上述代码示例中的 LongRunningOperation
方法仅用于模拟长时间运行的操作,并不推荐在实际应用中使用 Task.Delay().Wait()
这种方式,因为它会阻塞当前线程。在实际应用中,应该使用 await Task.Delay()
来实现非阻塞的延迟操作。
领取专属 10元无门槛券
手把手带您无忧上云