Difference between .GetAwaiter() and ConfigureAwait()
本文关键字:ConfigureAwait and between Difference GetAwaiter | 更新日期: 2023-09-27 18:23:36
谁能告诉我GetAwaiter()
和ConfigureAwait(false)
之间的区别。
它们都用于异步方法来解决死锁情况,ConfigureAwait
不使用同步上下文即可完成任务。我正在寻找可以使用GetAwaiter()
以及使用ConfigureAwait(false)
的场景。
听说如果它是我正在构建的库,那么我需要使用ConfigureAwait(false)
来生成 Await 任务的可配置可等待对象。我可以在单元测试用例项目中使用ConfigureAwait
还是应该使用GetAwaiter()
get await 任务。
摘
自 MSDN Docs
Task.GetAwaiter获取用于等待此任务的等待者。在此处和此处查看更多详细信息。
Task.ConfigureAwaiter配置用于等待此任务的等待程序。在此处和此处查看更多详细信息
以下是一些指导:
异步/等待 - 异步编程的最佳实践
还有一个类似的问题:
在不使用 await 的情况下调用异步方法时防止死锁
可以使用 Rx 模拟单元测试中的异步操作。我建议不要在单元测试中使用实际的异步;这会减慢它们的速度并阻止使用这些单元测试。