async 关键字是 C# 异步编程中的一个重要修饰符,通常与 await 搭配使用。使用它将方法、lambda 表达式和匿名方法标记为可异步的,此时它们将变为异步方法。示例:
public async Task<int> ExampleMethodAsync()
{
//...
}
异步方法 {#async-method}
异步方法有两个功能:
-
异步方法会以同步的方式运行,直到遇到
await
表达式。方法会停在这里(挂起),直到被 await 的任务完成。完成后才能继续通过该点。挂起时,控制返回至异步方法的调用方。异步方法在await
表达式执行时暂停并不构成方法退出,只会导致 finally 代码块不运行。 -
异步方法通常包含
await
运算符的一个或多个实例,不过缺少await
表达式也不会报错,此时编辑器会发出警告。如果异步方法未使用await
运算符标记暂停点,则该方法将同步执行。
async
关键字是上下文关键字,原因在于只有当它修饰方法、lambda 表达式或匿名方法时,它才是关键字。在所有其他上下文中,都会将其解释为标识符。
Reference Links
- async - C# Reference - C# | Microsoft Learn
- The Task Asynchronous Programming (TAP) model with async and await” - C# | Microsoft Learn