9

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

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

这是真的?还是有更深层次的差异?

4

2 回答 2

11

这取决于你在做什么ContinueWith。但是,是的,通常您可以await使用ContinueWith. 您不能做的是诸如“仅在失败时继续使用此代码”之类的事情-您只需为此使用正常的异常处理即可。正如 AlexH 所说,在您的方法的整体行为方面会有进一步的差异async- 但在大多数情况下,我会说这是可取的。基本上,代码流的异步性,所以异步方法倾向于调用更多的异步方法等。

我建议您阅读async/await是关于什么的(那里有大量资源 - 我建议将 MSDN 上的“使用基于任务的异步模式”页面作为一个起点。

于 2012-12-05T07:47:35.147 回答
4

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

于 2012-12-05T07:51:07.917 回答