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

我最近在阅读一些使用大量异步方法的代码,但有时需要同步执行它们。代码确实:


Foo foo = GetFooAsync(...).GetAwaiter().GetResult();

这是一样的吗?


Foo foo = GetFooAsync(...).Result;


德玛西亚99
浏览 4913回答 3
3回答

一只甜甜圈

差不多。虽然有一个小的区别:如果Task失败,GetResult()只会抛出直接造成的异常,同时Task.Result会抛出一个AggregateException。但是,使用其中任何一个时有async什么意义呢?100x更好的选择是使用await。此外,你不打算使用GetResult()。它仅适用于编译器,不适合您。但如果你不想讨厌AggregateException,请使用它。
打开App,查看更多内容
随时随地看视频慕课网APP