首页 > 解决方案 > 当我们说存储了同步上下文时,存储了什么?

问题描述

当遇到 await 时,控制权传递给调用者,而 awaited 调用等待响应。

在将控制权传递给调用者之前,会存储同步上下文。

在 Windows 应用程序的情况下,同步上下文是主 UI 线程。因此,当等待完成时,保存的上下文被恢复,等待下面的其余代码将使用原始同步上下文执行。

我想问-所有项目都存储在同步上下文中。例如:

  1. 当前线程

  2. 局部变量值

  3. 还有什么?

标签: c#asynchronousasync-await

解决方案


中没有存储任何内容SynchronizationContextSynchronizationContext本身由异步状态机捕获和存储,通过调用其Post方法在正确的时刻使用。本地状态与捕获的上下文一起存储在异步状态机中。


推荐阅读