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

等待与task.Result相同的已完成任务?

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

等待与task.Result相同的已完成任务?

这里已经有一些不错的答案/评论,但是只是为了…

有两个原因为什么我喜欢

await
Result
(或
Wait
)。首先是错误处理不同;
await
不会将异常包装在中
AggregateException
。理想情况下,异步代码根本不需要处理
AggregateException
,除非它特别
想要 处理。

第二个原因有些微妙。正如我在博客(和书中)中所描述的那样,

Result
/
Wait
可能导致死锁
,并且在
async
方法中使用时可能会导致更细微的死锁。因此,当我阅读代码并看到
Result
或时
Wait
,这是立即警告标志。的
Result
/
Wait
如果你是唯一正确的
绝对肯定 的任务已经完成。这不仅一目了然(在现实世界的代码中),而且对代码的更改也更加脆弱。

这并不是说

Result
/
Wait
应该 永远不会 被使用。我在自己的代码中遵循以下准则:

  1. 应用程序中的异步代码只能使用
    await
  2. 如果代码确实需要,则异步实用程序代码(在库中)有时可以使用
    Result
    /
    Wait
    。这种用法可能应该有注释。
  3. 并行 任务代码可以使用
    Result
    Wait

请注意,(1)到目前为止是最常见的情况,因此,我倾向于在

await
所有地方使用并将其他情况视为一般规则的例外。



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

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

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