C# GetAwaiter().GetResult()与GetAwaiter()的比较?
大多数开发人员都在使用C# GetAwaiter().GetResult()与GetAwaiter()的比较?,c#,.net,.net-core,C#,.net,.net Core,大多数开发人员都在使用GetAwaiter().GetResult(),如果没有GetResult()部分,我几乎找不到使用它的示例,但是当我们不需要结果时,使用GetResult()是不合逻辑的 是否有理由不在适用时使用GetAwaiter()?还是我对常见用法的理解有误?GetAwaiter()不等待任务,只返回TaskAwater对象,可以通过调用GetResult()来等待任务。所以只调用GetAwaiter()是没有意义的。如前所述,此类仅供编译器使用,用户不应使用。当您想等待任务但不
GetAwaiter().GetResult()
,如果没有GetResult()
部分,我几乎找不到使用它的示例,但是当我们不需要结果时,使用GetResult()
是不合逻辑的
是否有理由不在适用时使用
GetAwaiter()
?还是我对常见用法的理解有误?GetAwaiter()
不等待任务,只返回TaskAwater
对象,可以通过调用GetResult()
来等待任务。所以只调用GetAwaiter()
是没有意义的。如前所述,此类仅供编译器使用,用户不应使用。当您想等待任务但不需要结果时,应该使用Task.Wait()
。但有时用户仍然在try-catch块中使用Task.GetAwaiter().GetResult(),而不是Task.Wait(),因为Task.GetAwaiter().GetResult()在执行aggregateeexception
中的任务时没有包装抛出的Exception
,还显示更详细的堆栈跟踪,这使得异常处理更容易。GetResult等待任务的完成GetAwaiter()
按名称所示执行。引用直接取自文档。所以我的解释不是你需要一个结果,而是你想等待等待者完成更多。