假设我在 C# .Net Core 中有一个
async
方法:
public Task<ResultClass> Action() { ... }
调用有什么区别:
ResultClass res = await Action();
并调用:
ResultClass res = Action().ConfigureAwait(false).GetAwaiter().GetResult();
await关键字将在工作期间释放当前线程。因此,如果您的线程数量有限,它确实很有用。
“GetAwaiter().GetResult()”同步工作,因此当前线程在工作期间将被阻塞。
“ConfigureAwait(false)”是一种配置,如果您使用同步代码,则没有任何意义,但对于 await
很有用await Action().ConfigureAwait(false);
确保以下内容将被直接调用并避免潜在的死锁。