我在.net 4.0中安装了异步包。这使我能够在我的应用程序中使用async / await关键字。
据我所知,直到现在我可以在async / await中使用wrap my task.run代码,并且使用task.run和continuewith具有相同的结果。
这是真的吗?或者有更深层次的差异?
答案 0 :(得分:11)
这取决于您使用ContinueWith
进行的操作。但是,通常您可以使用await
来实现您之前使用ContinueWith
所获得的相同效果。您无法做的事情就像“仅在失败时继续使用此代码”之类的内容 - 您只需使用正常的异常处理。正如AlexH所说,async
方法的整体行为会有进一步的差异 - 但在大多数情况下,我会说是理想的。基本上,代码流的异步,因此异步方法倾向于调用更多的异步方法等。
我建议您仔细阅读async
/ await
的内容(有大量资源) - 我建议将MSDN上的"Consuming the Task-based Asynchronous Pattern"页作为一个起点。
答案 1 :(得分:4)
如果在函数原型中引入async关键字,会有所不同;将在Task调用者的级别抛出异常。 如果没有async关键字,则必须检查TaskContinuationOptions.OnlyOnFaulted状态以获取异常。