ReSharper 2025.2 Help

代码检查:库代码中缺少 '.ConfigureAwait(false)'

此检查建议在 库模式中启用 ConfigureAwait 分析的范围内,为可等待对象添加 ConfigureAwait(false) 调用。

ConfigureAwait() 调用的工作方式及其使用场景在 这篇 Microsoft .NET 博客文章以及您可以在互联网上找到的许多其他文章中有详细说明,但 ConfigureAwait() 的使用建议可以归结为以下几点:

  • 为了提高性能并避免潜在的死锁,请在任何非 UI 代码中使用 ConfigureAwait(false)。 这里的例外是应用程序级代码,例如 Windows Forms、WPF 和 ASP.NET。

  • ConfigureAwait(true) 对应于默认行为,并没有任何实际意义,因此可以安全地省略此类调用。

为了分析 ConfigureAwait() 的使用情况,ReSharper 需要知道它是应用程序级代码还是通用库代码。 默认情况下,ConfigureAwait 分析是禁用的,您需要在每个项目中启用分析,并选择以下两种模式之一:

  • 库模式 — ReSharper 将建议为可等待对象添加 ConfigureAwait(false) 调用。

  • UI 模式 — ReSharper 将报告 ConfigureAwait(true) 调用为多余的。

启用 ConfigureAwait 分析并选择其模式

  • 要在项目中启用 ConfigureAwait 分析,请右键单击解决方案资源管理器中的项目,选择 编辑项目项属性 | ConfigureAwait 分析模式 ,然后选择 UI

  • 要在当前项目中启用 ConfigureAwait 分析,请将光标放在任何 await 关键字上,按 Alt+Enter ,选择 ConfigureAwait 分析 ,然后选择 UI

  • 如果您 使用 EditorConfig ,您可以通过以下属性为项目、文件夹或文件指定 ConfigureAwait 分析模式: configure_await_analysis_mode = libraryconfigure_await_analysis_mode = ui

最后修改日期: 2025年 9月 27日