CA2261: не используйте ConfigureAwaitOptions.SuppressThrowing
его Task<TResult>
Свойство | Значение |
---|---|
Идентификатор правила | CA2261 |
Заголовок | Не используйте ConfigureAwaitOptions.SuppressThrowing с Task<TResult> |
Категория | Использование |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 9 | Как предупреждение |
Причина
Значение ConfigureAwaitOptions.SuppressThrowing передается Task<TResult>.ConfigureAwait(ConfigureAwaitOptions)в .
Описание правила
Параметр ConfigureAwaitOptions.SuppressThrowing не поддерживается универсальным Task<TResult>, так как это может привести к возврату недопустимого TResult
. Это правило помечает использование SuppressThrowing ошибки Task<TResult> во время сборки, а не во время выполнения.
Устранение нарушений
Task<TResult> Приведение к не универсальному методу Task перед вызовомConfigureAwait(ConfigureAwaitOptions).
Пример
В следующем фрагменте кода показано нарушение 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
будут недопустимыми и возникают ошибки во время выполнения.