在C#中,异步编程是一种常见的技术,可以提高程序的性能和响应能力。当需要同时运行多个异步任务,并等待它们全部完成后再进行下一步操作时,可以使用Task.WhenAll
方法来实现。
Task.WhenAll
方法接受一个Task
数组或IEnumerable<Task>
参数,并返回一个新的Task
,该任务将在所有输入任务都完成后完成。下面是一个示例代码,演示如何在C#中运行多个异步任务并等待它们全部完成:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
// 创建一组异步任务
List<Task<int>> tasks = new List<Task<int>>();
tasks.Add(DoSomethingAsync(1));
tasks.Add(DoSomethingAsync(2));
tasks.Add(DoSomethingAsync(3));
// 等待所有任务完成
await Task.WhenAll(tasks);
// 处理任务的结果
foreach (var task in tasks)
{
Console.WriteLine("Task result: " + task.Result);
}
Console.WriteLine("All tasks completed.");
}
public static async Task<int> DoSomethingAsync(int id)
{
// 模拟异步操作
await Task.Delay(1000);
Console.WriteLine("Task {0} completed.", id);
return id;
}
}
在上述示例代码中,我们首先创建了一个List<Task<int>>
类型的集合tasks
,并添加了三个异步任务DoSomethingAsync
,每个任务都返回一个int
类型的结果。
接下来,我们使用Task.WhenAll
方法等待所有任务完成。这里使用了await
关键字,表示等待异步操作完成。当所有任务都完成后,程序将继续执行后续代码。
然后,我们使用foreach
循环遍历每个任务,并输出其结果。这里使用了task.Result
属性来获取任务的结果。
最后,我们输出一条消息表示所有任务已经完成。
通过以上代码,我们可以同时运行多个异步任务,并在它们全部完成后进行下一步操作。这种方式能够提高程序的并发性和效率,特别适用于需要同时处理多个独立任务的情况。
希望以上解答对你有帮助!如果你还有其他问题,请随时提问。