c# - 等待 .NET 4.0 中的替代方案?

标签 c# .net task-parallel-library c#-5.0

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

最佳答案

我认为你的基本选择是

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

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

任务是一种功能结构。这就是为什么 ContinueWith() 不能很好地与 for 循环或 try-catch block 等命令式结构混合。因此 asyncawait 被引入,以便编译器可以帮助我们。

如果您没有编译器的支持(即您使用 .Net 4.0),您最好的选择是使用 TAP连同一个功能框架。 Reactive Extensions是一个非常好的处理异步方法的框架。

只需在谷歌上搜索“ react 性扩展任务”即可开始。

关于c# - 等待 .NET 4.0 中的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13377875/

相关文章:

c# - 是否可以使用任务并行库将长时间运行的方法和 "Working..."对话框一起运行,以允许长时间的任务写入 BindingList?

entity-framework-6 - 锁定 DbContext 以在 EF6 中完成操作

c# - 如何以编程方式合并两个多边形(对象数组)?

c# - 需要使用 Angular 保留在 MVC View 的下拉列表中选择的值

c# - 如何将 COM 对象包装在 native .NET 类中?

c# - 将 .NET Standard 2.0 与 Mono 结合使用

c# - 运行多个异步任务并等待它们全部完成

c# 长行代码格式化

c# - 只有一页的 Crystal 报表

.net - ImageMetadata 更改属性已损坏