.NET 4.0 中 await 关键字的最佳替代方案是什么?我有一个方法需要在异步操作后返回一个值。我注意到 wait() 方法完全阻塞了线程,从而使异步操作变得无用。在释放 UI 线程的同时运行异步操作的选项有哪些?
最佳答案
我认为你的基本选择是
- 使用
Task
和.ContinueWith()
- 使用异步 CTP和
async
/await
- 使用Reactive Extensions
最简单的方法可能是安装 Async CTP。据我所知,许可证允许商业用途。它为编译器打补丁并附带一个 150kb 的 dll,您可以将其包含到您的项目中。
您可以使用 Task
和 .ContinueWith()
。但这意味着,您必须在异常处理和流量控制方面付出一些努力。
任务是一种功能结构。这就是为什么 ContinueWith()
不能很好地与 for
循环或 try-catch
block 等命令式结构混合。因此 async
和 await
被引入,以便编译器可以帮助我们。
如果您没有编译器的支持(即您使用 .Net 4.0),您最好的选择是使用 TAP连同一个功能框架。 Reactive Extensions是一个非常好的处理异步方法的框架。
只需在谷歌上搜索“ react 性扩展任务”即可开始。
关于c# - 等待 .NET 4.0 中的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13377875/