CA1849: 非同期メソッド中の非同期メソッドの呼び出し
プロパティ | 値 |
---|---|
ルール ID | CA1849 |
Title | 非同期メソッド中の非同期メソッドの呼び出し |
[カテゴリ] | パフォーマンス |
修正が中断ありか中断なしか | なし |
.NET 9 では既定で有効 | いいえ |
原因
Async サフィックス付きの同等のものが存在するすべてのメソッドが、Task が返されるメソッドから呼び出されると、この警告が生成されます。 さらに、Task.Wait()
、Task<T>.Result
、Task.GetAwaiter().GetResult()
を呼び出すと、この警告が生成されます。
規則の説明
既に非同期であるメソッドでは、他のメソッドの呼び出しはその非同期バージョン (存在する場合) に対して行う必要があります。
違反の修正方法
違反:
Task DoAsync()
{
file.Read(buffer, 0, 10);
}
修正:
そのメソッドの非同期バージョンを await します。
async Task DoAsync()
{
await file.ReadAsync(buffer, 0, 10);
}
どのようなときに警告を抑制するか
同期および非同期コード用の 2 つの別個のコード パスがある場合は、if 条件を使用して、この規則による警告を抑制しても問題ありません。 また、Task が解決されたかどうかのチェックがある場合は、同期メソッドおよびプロパティを使用して問題ありません。
警告を抑制する
単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。
#pragma warning disable CA1849
// The code that's violating the rule is on this line.
#pragma warning restore CA1849
ファイル、フォルダー、またはプロジェクトの規則を無効にするには、構成ファイルでその重要度を none
に設定します。
[*.{cs,vb}]
dotnet_diagnostic.CA1849.severity = none
詳細については、「コード分析の警告を抑制する方法」を参照してください。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET