代码检查:使用 'ConfigureAwait' 的多余上下文捕获
此检查会在 UI 模式中启用 ConfigureAwait 分析的范围内,将 ConfigureAwait(true) 调用报告为多余。
ConfigureAwait() 调用的工作方式及其使用场景在 这篇 Microsoft .NET 博客文章以及您可以在互联网上找到的许多其他文章中有详细说明,但对 ConfigureAwait() 的使用建议可以归结为以下几点:
为了提高性能并避免潜在的死锁,请在任何非 UI 代码中使用
ConfigureAwait(false)。 这里的例外是应用程序级代码,例如 Windows Forms、WPF 和 ASP.NET。ConfigureAwait(true)对应于默认行为,并没有任何实际意义,因此可以安全地省略此类调用。
为了分析 ConfigureAwait() 的使用情况,JetBrains Rider 需要知道它是应用程序级代码还是通用库代码。 默认情况下,ConfigureAwait 分析是禁用的,您需要在每个项目中启用分析,并选择以下两种模式之一:
库模式 — JetBrains Rider 将建议向可等待对象添加
ConfigureAwait(false)调用。UI 模式 — JetBrains Rider 将报告
ConfigureAwait(true)调用为多余。
启用 ConfigureAwait 分析并选择其模式
要在当前项目中启用 ConfigureAwait 分析,请将插入点放在任意
await关键字上,按下 Alt+Enter ,选择 ConfigureAwait 分析 ,然后选择 库 或 UI。如果您 使用 EditorConfig ,您可以通过以下属性为项目、文件夹或文件指定 ConfigureAwait 分析模式:
configure_await_analysis_mode = library或configure_await_analysis_mode = ui。