GetAwaiter()。GetResult()与GetAwaiter()?

时间:2019-04-21 10:13:28

标签: c# .net .net-core

大多数开发人员都在使用GetAwaiter().GetResult(),如果没有GetResult()部分,我几乎无法使用它来挖掘示例,但是当我们不需要GetResult()时就不合逻辑了结果。

有没有理由不只在适用时使用GetAwaiter()?还是我对常用用法有什么误解?

1 个答案:

答案 0 :(得分:0)

GetAwaiter()不等待任务,仅返回TaskAwater对象,该对象可以通过调用GetResult()来等待任务。因此,仅调用GetAwaiter()是没有意义的。正如documentation指出的,该类仅供编译器使用,用户不应使用。当您要等待任务但不需要结果时,应使用Task.Wait()。但有时用户仍会使用try.catch块中的Task.GetAwaiter()。GetResult()而不是Task.Wait(),因为Task.GetAwaiter()。GetResult()不会包装在{中执行任务时抛出的Exception {1}},还显示了更详细的堆栈跟踪,这使得异常处理更加容易。