在.NET 4.0中等待替代方案?

Dan*_*nte 10 .net c# task-parallel-library c#-5.0

什么是.NET 4.0中await关键字的最佳替代方案?我有一个方法,需要在异步操作后返回一个值.我注意到wait()方法完全阻塞了线程,从而使异步操作无效.在释放UI线程的同时运行异步操作有哪些选择?

Pet*_*erB 4

我认为你的基本选择是

最简单的方法可能是安装异步 CTP。据我所知,该许可证允许商业使用。它修补了编译器并附带了一个 150kb 的 dll,您可以将其包含到您的项目中。

您可以使用Task.ContinueWith()。但这意味着您必须在异常处理和流量控制方面付出一些努力。

任务是一个功能性的构造。这就是为什么ContinueWith()不能与for循环或try-catch块等命令式结构很好地混合。因此asyncawait得到了介绍,以便编译器可以帮助我们解决这个问题。

如果您无法获得编译器的支持(即您使用.Net 4.0),那么最好的选择是将 TAP功能框架一起使用。Reactive Extensions是一个非常好的处理异步方法的框架。

只需谷歌搜索“反应式扩展任务”即可开始。