一、基本概念
在C#中,async和await关键字用于异步编程。异步编程允许程序在执行I/O密集型操作时不会被阻塞,从而提高程序的性能和响应性。
async关键字用于定义异步方法,表明该方法可能包含await表达式,并且可以在其执行期间异步等待其他操作的完成。
await关键字用于等待异步操作完成,它只能在async方法内使用。await表达式会挂起当前方法的执行,直到其等待的操作完成,然后恢复方法的执行。
二、使用方法调用的方式
代码如下(示例):
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
// 调用 test 方法,该方法是异步的,但不会阻塞主线程
test();
Console.WriteLine("main end..."); // 输出主函数结束的提示
Console.ReadKey(); // 等待用户输入任意键,保持程序运行
}
// 异步方法 test
static async void test()
{
// 异步等待 2000 毫秒(2 秒)
await Task.Delay(2000);
// 调用 stest 方法创建三个异步任务
Task<int> Result0 = stest(100, 2000);
Task<int> Result1 = stest(200, 3000);
Task<int> Result2 = stest(300, 4000);
// 创建一个任务列表,将三个异步任务添加到列表中
List<Task<int>> tsklst = new List<Task<int>>();
tsklst.AddRange(new List<Task<int>> {
Result0, Result1, Result2 });
// 输出开始执行异步任务的提示
Console.WriteLine("delegateFuncTaskReturn has been Started {0}", 100);
// 使用 Task.WhenAny 方法异步等待任务列表中的任意一个任务完成
Task<int> firstCompletedTask = await Task.WhenAny(tsklst);
// 输出异步任务完成后的提示
Console.WriteLine(