【问题标题】:Async / await with task.run vs task.run and continuewith in .NET 4.0在 .NET 4.0 中使用 task.run 与 task.run 和 continuewith 进行异步/等待
【发布时间】:2012-12-05 16:20:54
【问题描述】:

我在 .net 4.0 中安装了异步包。这使我能够在我的应用程序中使用 async / await 关键字。

据我所知,到目前为止,我可以使用将我的 task.run 代码包装在 async / await 中,并且与使用 task.run 和 continuewith 的结果相同。

这是真的吗?还是有更深层次的区别?

【问题讨论】:

    标签: c# .net async-await


    【解决方案1】:

    这取决于您对ContinueWith 所做的事情。但是,是的,您通常可以使用await 来实现与以前使用ContinueWith 相同的效果。您不能做的是“仅在失败时继续使用此代码”之类的事情 - 您只需为此使用正常的异常处理。正如 AlexH 所说,在您的 async 方法的整体行为方面会有进一步的差异 - 但在大多数情况下,我会说这是可取的。基本上就是代码流的异步,所以async方法往往会调用更多的async方法等等。

    我建议您阅读 async/await 的内容(那里有大量资源 - 我建议您将 MSDN 上的 "Consuming the Task-based Asynchronous Pattern" 页面作为一个起点。

    【讨论】:

      【解决方案2】:

      如果在函数原型中引入 async 关键字,将会有所不同;异常将在任务调用者的级别引发。 如果没有 async 关键字,则必须检查 TaskContinuationOptions.OnlyOnFaulted 状态才能获取异常。

      【讨论】:

        猜你喜欢
        • 2012-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多