在C#
中选择Task.Result
Task.GetAwaiter().GetResult()
同步访问C#中异步操作的结果时,开发人员通常会遇到
。 尽管两者都检索了任务的结果,但它们在异常处理和潜在的陷阱方面有所不同。
Task.Result
Task.GetAwaiter().GetResult()
密钥差异:
>两种方法都会阻止当前线程,直到异步操作完成。但是:
异常处理:,出于向后兼容的原因,将异常包装在>中。这可能会使调试变得复杂。
Task.GetAwaiter().GetResult()
Task.Result
AggregateException
>。
Task.GetAwaiter().GetResult()
Task.Result
和实现异步执行,最大程度地提高性能并防止潜在的僵局。 但是,如果不可避免地同步访问:
async
await
favor
Task.GetAwaiter().GetResult()
>始终包裹在
> 注意僵局:try-catch
如果在UI线程或其他受约束上下文中工作,请仔细考虑阻止的含义。
>和避免使用和
的异步编程模式,以避免与阻止呼叫相关的复杂性和风险。以上是task.Result vs.task.getawaiter()。getResult():我应该使用什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!