async
#unity/日常积累
async(C# 参考)
使用 async
修饰符可将方法、lambda 表达式或匿名方法指定为异步。 如果对方法或表达式使用此修饰符,则其称为异步方法 。 如下示例定义了一个名为 ExampleMethodAsync
的异步方法:
|
|
如果不熟悉异步编程,或者不了解异步方法如何在不阻止调用方线程的情况下使用 await
运算符执行可能需要长时间运行的工作,请参阅使用 Async 和 Await 的异步编程中的说明。 如下代码见于一种异步方法中,且调用 HttpClient.GetStringAsync 方法:
|
|
异步方法同步运行,直至到达其第一个 await
表达式,此时会将方法挂起,直到等待的任务完成。 同时,如下节示例中所示,控件将返回到方法的调用方。
如果 async
关键字修改的方法不包含 await
表达式或语句,则该方法将同步执行。 编译器警告将通知你不包含 await
语句的任何异步方法,因为该情况可能表示存在错误。 请参阅编译器警告(等级 1)CS4014。
async
关键字是上下文关键字,原因在于只有当它修饰方法、lambda 表达式或匿名方法时,它才是关键字。 在所有其他上下文中,都会将其解释为标识符。
示例
下面的示例展示了异步事件处理程序 StartButton_Click
和异步方法 ExampleMethodAsync
之间的控制结构和流程。 此异步方法的结果是 Web 页面的字符数。 此代码适用于在 Visual Studio 中创建的 Windows Presentation Foundation (WPF) 应用或 Windows 应用商店应用;请参见有关设置应用的代码注释。
可以在 Visual Studio 中将此代码作为 Windows Presentation Foundation (WPF) 应用或 Windows 应用商店应用运行。 需要一个名为 StartButton
的按钮控件和一个名为 ResultsTextBox
的文本框控件。 切勿忘记设置名称和处理程序,以便获得类似于以下代码的内容:
|
|