C# 多个Task任务,要求全部完成后执行后面代码
时间: 2024-09-23 14:11:15 浏览: 35
c#多线程处理
在C#中,如果你需要同时处理多个`Task`并确保它们都完成后执行后续操作,你可以使用`Task.WhenAll`方法。这个方法接收一个`Task`数组或`IEnumerable<Task>`作为参数,并返回一个新的`Task`,当所有传入的任务都完成时,这个新任务就会完成。
以下是一个简单的示例:
```csharp
using System;
using System.Threading.Tasks;
public async void ExecuteTasksSequentially()
{
// 创建多个任务
Task task1 = Task.Run(() => DoSomethingAsync(1));
Task task2 = Task.Run(() => DoSomethingAsync(2));
Task task3 = Task.Run(() => DoSomethingAsync(3));
// 使用WhenAll等待所有任务完成
await Task.WhenAll(task1, task2, task3);
// 所有任务完成后,这里会执行
Console.WriteLine("All tasks have completed.");
}
// 假设这是你要执行的任务方法
private async Task DoSomethingAsync(int number)
{
await Task.Delay(1000); // 模拟耗时操作
Console.WriteLine($"Task {number} is done.");
}
```
在这个例子中,`DoSomethingAsync`方法会被异步执行,`ExecuteTasksSequentially`方法则通过`await Task.WhenAll`确保所有`Task`完成后才会打印"所有任务已完成"。
阅读全文