await 和ConfigureAwait(false).GetAwaiter().GetResult(); 有什么区别? [重复]

问题描述 投票:0回答:1

假设我在 C# .Net Core 中有一个

async
方法:

public Task<ResultClass> Action() { ... }

调用有什么区别:

ResultClass res = await Action();

并调用:

ResultClass res = Action().ConfigureAwait(false).GetAwaiter().GetResult();

c# .net-core async-await configureawait
1个回答
4
投票

await关键字将在工作期间释放当前线程。因此,如果您的线程数量有限,它确实很有用。

“GetAwaiter().GetResult()”同步工作,因此当前线程在工作期间将被阻塞。

“ConfigureAwait(false)”是一种配置,如果您使用同步代码,则没有任何意义,但对于 await

很有用
await Action().ConfigureAwait(false);

确保以下内容将被直接调用并避免潜在的死锁。

© www.soinside.com 2019 - 2024. All rights reserved.