【问题标题】:What deos ConfigureAwait do? ASP.NET Web API 2配置等待做什么? ASP.NET Web API 2
【发布时间】:2018-01-27 02:40:39
【问题描述】:

我正在开发 ASP.NET Web API 2 应用程序。在我们用于每个异步请求的应用程序中:

ConfigureAwait(false);

我真的不明白这是什么意思。上网查了一下还是不明白具体是干什么的?

【问题讨论】:

标签: .net asp.net-web-api async-await


【解决方案1】:

要理解它,你需要了解Synchronization ContextThreading Models是什么。

从实际的角度来看,让我们看看典型的例子。您正在开发 GUI 应用程序(Win Forms 或 WPF)。您有专用的 UI 线程。 您必须在 UI 线程上更新 UI,并且不要通过计算或等待某些响应来阻塞 UI 线程。

ConfigureAwaitasync/await 有意义。默认情况下,await 之后的代码将在捕获的 UI 线程上运行,

await DoAsync();
//UI updating code goes here. Will run on UI thread

如果指定 ConfigureAwait(false),则等待后的代码将在线程池上运行

await DoAsync().ConfigureAwait(false);
//CPU intensive operation. Will run on thread pool

只要您有 ASP.NET 应用程序,您就没有专用的 UI 线程。但是同步上下文也很重要。 Understanding the SynchronizationContext in ASP.NET会给你详细信息。

【讨论】:

  • 好的,谢谢。清除。但它在 ASP.NET Web Api 2 应用程序中真的很重要吗?
  • ASP.NET 线程模型更复杂。但基本上,使用 ConfigureAwait(false) 没有严格的规则。默认行为是您最可能期望的。它可用于性能调优。但是,ConfigureAwait(false) 被认为是库代码中的一个好习惯(假设它可以在 ASP.NET 之外使用)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
相关资源
最近更新 更多