Ale*_*hke 15 .net c# asp.net async-await
我想知道编写异步代码的最佳/正确方法是什么,该异步代码由两个(或更多)异步和依赖(第一个必须完成执行第二个)操作组成.
使用async/await的示例:
await RunFirstOperationAsync();
await RunSecondOperationAsync();
Run Code Online (Sandbox Code Playgroud)
续例示例:
await RunFirstOperationAsync()
.ContinueWith(t => RunSecondOperationAsync());
Run Code Online (Sandbox Code Playgroud)
Ste*_*ary 17
await如果可能的话,你想要使用.
ContinueWith有很多问题.我在我的博客文章中简要描述了为什么ContinueWith是危险的,它建立在我之前的博客文章中,为什么StartNew是危险的(他们有许多相同的问题).
特别是:
ContinueWith没有一个好的默认值TaskScheduler.默认任务调度程序是TaskScheduler.Current(非TaskScheduler.Default),SynchronizationContext如果需要,必须手动完成当前的恢复.ContinueWith有非理想的默认选项.对于异步代码,你会想DenyChildAttach和ExecuteSynchronously,至少.ContinueWith不了解异步延续,这通常需要额外Unwrap调用来解决此限制.ContinueWithCancellationToken以令人惊讶的方式对待它的论点.更多关于我的博客文章.这些论点都在我关于任务延续的博客文章中进行了总结.await没有任何这些缺点.