c# - GetAwaiter().GetResult() 与 GetAwaiter()?
问题描述
大多数开发人员都在使用GetAwaiter().GetResult()
,我几乎无法在没有部件的情况下挖掘使用它的示例,但是当我们不需要结果时GetResult()
使用它是不合逻辑的。GetResult()
是否有理由不只GetAwaiter()
在适用时使用?还是我对常见用法的看法是错误的?
解决方案
GetAwaiter()
不等待任务,只返回TaskAwater
对象,可以通过调用来等待任务GetResult()
。所以只打电话GetAwaiter()
是没有意义的。正如文档所述,此类仅用于编译器使用,用户不应使用它。Task.Wait()
当您想等待任务但不需要结果时,您应该使用, 。但有时用户仍然使用 Task.GetAwaiter().GetResult(),而不是在 try-catch 块中使用 Task.Wait(),因为 Task.GetAwaiter().GetResult() 不会Exception
在执行任务时抛出AggregateException
并显示更详细的堆栈跟踪,这使得异常处理更容易。
推荐阅读
- visual-studio-code - 没有名为“azureml”的模块 >> !pip install azureml-core >> from azureml.core import Experiment
- apache - 如何故意在 apache 上创建服务器错误以测试错误日志
- vue.js - 将 Vue v-model 与来自服务器端的初始数据绑定
- sql - 获取每个客户的前 6 名总数
- reactjs - 如何将道具传递给组件(使用钩子),该组件用于从渲染道具编程中获取道具
- flutter - 如何在颤动的通话记录中使用小部件中的方法?
- python - 在给定 y 范围内绘制 matplotlib 中的垂直线
- python - 如何获取 SQL 性能计数器计数器值(不包括活动连接池的数量)
- elasticsearch - Kibana:无限范围的领域 infinity-infinity
- amazon-s3 - EKS 上的 Docker 注册表使用服务帐户在 S3 上存储数据