我已经在 .net 4.0 中安装了异步包。这使我能够在我的应用程序中使用 async / await 关键字。
据我所知,到目前为止,我可以在 async / await 中使用包装我的 task.run 代码,并且与使用 task.run 和 continuewith 具有相同的结果。
这是真的?还是有更深层次的差异?
我已经在 .net 4.0 中安装了异步包。这使我能够在我的应用程序中使用 async / await 关键字。
据我所知,到目前为止,我可以在 async / await 中使用包装我的 task.run 代码,并且与使用 task.run 和 continuewith 具有相同的结果。
这是真的?还是有更深层次的差异?
这取决于你在做什么ContinueWith
。但是,是的,通常您可以await
使用ContinueWith
. 您不能做的是诸如“仅在失败时继续使用此代码”之类的事情-您只需为此使用正常的异常处理即可。正如 AlexH 所说,在您的方法的整体行为方面会有进一步的差异async
- 但在大多数情况下,我会说这是可取的。基本上,代码流的异步性,所以异步方法倾向于调用更多的异步方法等。
我建议您阅读async
/await
是关于什么的(那里有大量资源 - 我建议将 MSDN 上的“使用基于任务的异步模式”页面作为一个起点。
如果在函数原型中引入 async 关键字,将会有所不同;异常将在任务调用者级别引发。如果没有 async 关键字,您必须检查 TaskContinuationOptions.OnlyOnFaulted 状态以获取异常。