C# 异步编程:async 和 await 关键字详解
C# 中的 async 和 await 关键字是用来简化异步编程的语法。它们允许您编写异步代码,而不必编写复杂的回调函数。
使用 async 和 await 的基本语法如下:
public async Task MyMethodAsync()
{
// 异步操作
await SomeAsyncOperationAsync();
}
在上面的代码中,async 关键字表示 MyMethodAsync() 是一个异步方法。await 关键字表示异步操作 SomeAsyncOperationAsync() 要等待完成,然后再继续执行后面的代码。
下面是 async 和 await 的一些用法:
- 在异步方法中调用另一个异步方法:
public async Task MyMethodAsync()
{
// 异步操作1
await SomeAsyncOperationAsync();
// 异步操作2
await AnotherAsyncOperationAsync();
}
- 在异步方法中使用
Task.Run()方法运行一个同步方法:
public async Task MyMethodAsync()
{
// 异步操作
await Task.Run(() => SomeSyncOperation());
}
- 在异步方法中使用
Task.WhenAll()方法等待多个异步操作完成:
public async Task MyMethodAsync()
{
// 异步操作1
var task1 = SomeAsyncOperationAsync();
// 异步操作2
var task2 = AnotherAsyncOperationAsync();
// 等待两个操作完成
await Task.WhenAll(task1, task2);
}
- 在异步方法中使用
Task.WhenAny()方法等待任何一个异步操作完成:
public async Task<MyResult> MyMethodAsync()
{
// 异步操作1
var task1 = SomeAsyncOperationAsync();
// 异步操作2
var task2 = AnotherAsyncOperationAsync();
// 等待任何一个操作完成
var completedTask = await Task.WhenAny(task1, task2);
// 返回结果
return await completedTask;
}
- 在异步方法中使用
CancellationToken取消异步操作:
public async Task MyMethodAsync(CancellationToken cancellationToken)
{
// 异步操作
await SomeAsyncOperationAsync(cancellationToken);
}
原文地址: https://www.cveoy.top/t/topic/mpE5 著作权归作者所有。请勿转载和采集!