CA2261: ConfigureAwaitOptions.SuppressThrowing
を Task<TResult>
と共に使用しない
プロパティ | 値 |
---|---|
ルール ID | CA2261 |
Title | ConfigureAwaitOptions.SuppressThrowing を Task<TResult> と共に使用しない |
カテゴリ | 使用方法 |
修正が中断ありか中断なしか | なし |
.NET 9 では既定で有効 | 警告として |
原因
ConfigureAwaitOptions.SuppressThrowing の値が Task<TResult>.ConfigureAwait(ConfigureAwaitOptions) に渡されます。
規則の説明
この ConfigureAwaitOptions.SuppressThrowing オプションは、無効な TResult
を返す可能性があるため、ジェネリック Task<TResult> ではサポートされていません。 このルールでは、実行時ではなくビルド時にエラーが明らかになるように、SuppressThrowing の使用に Task<TResult> のフラグが設定されます。
違反の修正方法
ConfigureAwait(ConfigureAwaitOptions) を呼び出す前に Task<TResult> を非ジェネリック Task にキャストします。
例
次のコード スニペットは CA2261 の違反を示しています。
Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
次のコード スニペットは修正プログラムを示しています。
Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
どのようなときにエラーを抑制するか
このルールからの警告は抑制しないでください。 タスクでエラーが発生した場合、または取り消された場合、TResult
は無効になり、実行時エラーが発生します。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET