大多数开发人员都在使用GetAwaiter().GetResult()
,如果没有GetResult()
部分,我几乎无法使用它来挖掘示例,但是当我们不需要GetResult()
时就不合逻辑了结果。
有没有理由不只在适用时使用GetAwaiter()
?还是我对常用用法有什么误解?
答案 0 :(得分:0)
GetAwaiter()
不等待任务,仅返回TaskAwater
对象,该对象可以通过调用GetResult()
来等待任务。因此,仅调用GetAwaiter()
是没有意义的。正如documentation指出的,该类仅供编译器使用,用户不应使用。当您要等待任务但不需要结果时,应使用Task.Wait()
。但有时用户仍会使用try.catch块中的Task.GetAwaiter()。GetResult()而不是Task.Wait(),因为Task.GetAwaiter()。GetResult()不会包装在{中执行任务时抛出的Exception
{1}},还显示了更详细的堆栈跟踪,这使得异常处理更加容易。