ConfigureAwait 分析
非同期プログラミングモデル(async/await キーワード)に依存するコードでは、同期コンテキストを管理するために ConfigureAwait() 呼び出しがよく使用されます。
ConfigureAwait() 呼び出しの仕組みとその使用シナリオは、 この Microsoft.NET ブログ記事(英語)やインターネット上にある他の多くの投稿で詳細に説明されていますが、 ConfigureAwait() の使用に関するアドバイスは次のように要約されます。
パフォーマンスを向上させ、潜在的なデッドロックを回避するには、UI 以外のコードで
ConfigureAwait(false)を使用します。 ここでの例外は、Windows フォーム、WPF、ASP.NET などのアプリレベルのコードです。ConfigureAwait(true)はデフォルトの動作に対応し、意味のあることは何もしないため、このような呼び出しは安全に省略できます。
ConfigureAwait() の使用箇所を分析するには、ReSharper は、それがアプリケーションレベルのコードか、汎用ライブラリコードかを知る必要があります。 デフォルトでは、ConfigureAwait 分析は無効になっているため、次の 2 つのモードのいずれかを選択して、各プロジェクトで分析を有効にする必要があります。
ライブラリモード — ReSharper は、
ConfigureAwait(false)呼び出しを待機可能オブジェクトに追加することを提案します。UI モード — ReSharper は
ConfigureAwait(true)呼び出しを冗長なものとして報告します。
ConfigureAwait 分析を有効にして、そのモードを選択する
プロジェクトで ConfigureAwait 分析を有効にするには、ソリューションエクスプローラーでプロジェクトを右クリックし、 を選択してから、 ライブラリ または ユーザーインターフェース を選択します。
現在のプロジェクトで ConfigureAwait 分析を有効にするには、任意の
awaitキーワードにキャレットを置き、 Alt+Enter を押し、 ConfigureAwait 分析 を選択してから、 ライブラリ または ユーザーインターフェース を選択します。EditorConfig を 使用する場合は、プロジェクト、フォルダー、ファイルの ConfigureAwait 分析モードを次のプロパティで指定できます:
configure_await_analysis_mode = libraryまたはconfigure_await_analysis_mode = ui
ConfigureAwait 分析は コードインスペクション の 2 種類に依存しています: 冗長な「ConfigureAwait(true)」 (UI モード )、および ライブラリコードに「.ConfigureAwait(false)」がありません (ライブラリモード)。 これらのインスペクションが、ReSharper オプション の ページで有効化されていることを確認してください Alt+R、O 。
分析を微調整するには、プロジェクトで分析を有効にしてから、無視する必要がある場所でこれらのインスペクションを 抑制します。