.NET 异步编程全解析:从基础到高级应用
1. 异步方法基础
当调用一个新任务时,该任务会使调用线程休眠五秒,完成后会返回一个字符串值。这个字符串会被放入一个新的 Task<string> 对象中并返回给调用者。例如 DoWorkAsync() 方法,当逻辑流程到达 await 关键字时,调用线程会在该方法中暂停,直到调用完成。在图形应用程序中,用户可以在 DoWorkAsync() 方法执行时继续使用 UI。
2. SynchronizationContext 与 async/await
SynchronizationContext 是一个提供无同步的自由线程上下文的基类。它的目的是让公共语言运行时的内部异步/同步操作在不同的同步模型下正常工作。例如,GUI 应用程序(如 WinForms、WPF)不允许辅助线程直接访问控件,必须通过委托来进行访问;而控制台应用程序则没有这个限制。
SynchronizationContext 提供了一个虚拟的 post 方法,用于异步执行委托。它为框架提供了一种模式,以适当处理异步请求(如 WPF/WinForms 的调度,非 GUI 应用程序的直接执行等),还能将工作单元排队到上下文并记录未完成的异步操作数量。
当使用 async/await 模式时,异步方法会利用目标框架的 SynchronizationContext
超级会员免费看
订阅专栏 解锁全文
681

被折叠的 条评论
为什么被折叠?



