为了账号安全,请及时绑定邮箱和手机立即绑定

Task.Result和.GetAwaiter.GetResult()一样吗?

Task.Result和.GetAwaiter.GetResult()一样吗?

C#
德玛西亚99 2019-09-19 16:48:14
我最近在阅读一些使用大量异步方法的代码,但有时需要同步执行它们。代码确实:Foo foo = GetFooAsync(...).GetAwaiter().GetResult();这是一样的吗?Foo foo = GetFooAsync(...).Result;?
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

差不多。虽然有一个小的区别:如果Task失败,GetResult()只会抛出直接造成的异常,同时Task.Result会抛出一个AggregateException。但是,使用其中任何一个时有async什么意义呢?100x更好的选择是使用await

此外,你不打算使用GetResult()。它仅适用于编译器,不适合您。但如果你不想讨厌AggregateException,请使用它。


查看完整回答
反对 回复 2019-09-19
  • 3 回答
  • 0 关注
  • 5022 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信