Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GetAwaiter().GetResult()与GetAwaiter()的比较?_C#_.net_.net Core - Fatal编程技术网

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()
按名称所示执行。引用直接取自文档。所以我的解释不是你需要一个结果,而是你想等待等待者完成更多。