📅  最后修改于: 2023-12-03 14:39:45.360000             🧑  作者: Mango
在 C# 中创建任务并等待所有任务完成是常见的任务处理要求。在本文中,我们将介绍如何使用 C# 中的 Task API 创建并等待任务的完成。
在 C# 中,使用 Task 类型创建一个可以异步执行的任务。以下是创建任务的基本语法:
Task task = Task.Run(() =>
{
// 在这里写异步执行的任务代码
});
在上面的代码中,Task.Run() 方法接受一个 lambda 表达式作为参数,这个 lambda 表达式包含异步执行的任务代码。Task.Run() 方法将这个 lambda 表达式封装成一个 Task 类型的对象并返回,我们可以将这个对象存储在一个变量中,以便后续使用。
在 C# 中,可以使用 Task.WaitAll() 方法等待所有任务完成。以下是等待任务完成的基本语法:
Task[] tasks = new Task[n];
for (int i = 0; i < n; i++)
{
tasks[i] = Task.Run(() =>
{
// 在这里写异步执行的任务代码
});
}
Task.WaitAll(tasks);
在上面的代码中,我们首先创建一个长度为 n 的 Task 数组,每个元素都包含一个异步执行的任务代码。然后我们使用 Task.WaitAll() 方法等待所有任务完成。Task.WaitAll() 方法接受一个 Task 数组作为参数,等待这个 Task 数组中所有任务执行完成后返回。
下面是一个完整的示例,它创建了两个异步任务并等待它们的完成:
using System;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
Task task1 = Task.Run(() =>
{
Console.WriteLine("Task 1 started...");
Task.Delay(1000).Wait();
Console.WriteLine("Task 1 completed.");
});
Task task2 = Task.Run(() =>
{
Console.WriteLine("Task 2 started...");
Task.Delay(2000).Wait();
Console.WriteLine("Task 2 completed.");
});
Task.WaitAll(task1, task2);
Console.WriteLine("All tasks completed.");
}
}
在上面的代码中,我们创建了两个异步任务,每个任务都模拟了一个时间上的延迟。在任务全部完成后,我们输出了一条消息,表示所有任务已完成。
使用 C# 中的 Task API 可以方便地创建和管理异步任务。我们可以使用 Task.Run() 方法创建异步任务,使用 Task.WaitAll() 等待所有任务完成。在实际开发中,这种方式非常常见,并且可以帮助我们提高应用程序的性能和并发处理能力。