.GetAwaiter() 和ConfigureAwait() 之间的区别

use*_*610 5 c# async-await

谁能告诉我GetAwaiter()和之间的区别ConfigureAwait(false)

它们都用在 Async 方法中来解决死锁情况并ConfigureAwait在不使用 Synchrnoization 上下文的情况下完成任务。我正在寻找我们可以使用的场景GetAwaiter()以及我们使用的场景ConfigureAwait(false)

我听说如果它是我正在构建的库,那么我需要使用ConfigureAwait(false)它生成 Await 任务的 Configurable Awaitable 对象。我可以ConfigureAwait在 Unittest 案例项目中使用还是应该使用GetAwaiter()get wait 任务。

tod*_*dmo 2

以下是一些指导:

Async/Await - 异步编程的最佳实践

和另一个类似的问题:

在不使用await的情况下调用异步方法时防止死锁

您可以使用Rx来模拟​​单元测试中的异步操作。我建议不要在单元测试中使用实际的异步;这会减慢他们的速度并阻止使用这些单元测试。