栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Async await关键字是否等同于ContinueWith lambda?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Async await关键字是否等同于ContinueWith lambda?

总体思路是正确的-该方法的其余部分被制成各种形式的延续。

在“快速通道”的博客文章有如何的细节

async
/
await
编译器改造工程。

差异,浮现在脑海:

await
关键字还使用“调度环境”的概念。调度上下文是(
SynchronizationContext.Current
如果存在的话),返回
TaskScheduler.Current
。然后,继续在调度上下文上运行。因此,如果需要的话,可以更近似地传递
TaskScheduler.FromCurrentSynchronizationContext
ContinueWith
,然后再回落
TaskScheduler.Current

实际

async
/
await
实现基于模式匹配;它使用“等待”模式,该模式允许等待任务以外的其他事情。例如WinRT异步API,某些特殊方法(例如
Yield
Rx
observables和特殊套接字可等待),它们对GC的影响不那么严重。任务功能强大,但并不是唯一可以等待的任务。

还有一点细微的挑剔的区别:如果等待已完成,则该

async
方法实际上不会在此时返回;它同步地继续。因此,这有点像传递
TaskContinuationOptions.ExecuteSynchronously
,但是没有与堆栈相关的问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465364.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号