首页 > 解决方案 > 编译器如何知道在等待调用后在哪里恢复控制

问题描述

REST 调用基本上是无状态调用。然后,当我们对第三方 api 进行 await 调用时,编译器或控件在哪里存储有关 await 调用完成后它需要处理的位置的信息。

标签: c#async-await

解决方案


一旦 await 调用完成,编译器或控件在哪里存储有关它需要处理的位置的信息。

关键字做了async两件事:它允许使用await关键字,并指示编译器将async方法分解为状态机。血淋淋的细节在这里,但总结一下:

该方法在每次使用 时都会“拆分”,该方法的await每个“部分”都是状态机的不同部分。然后保存状态机的当前状态(连同局部变量的值)。当等待的任务完成时,该任务的继续执行状态机的下一步。


推荐阅读