Бөлісу құралы:


CA2261: не используйте ConfigureAwaitOptions.SuppressThrowing с Task<TResult>

Свойство Значение
Идентификатор правила CA2261
Заголовок Не используйте ConfigureAwaitOptions.SuppressThrowing с Task<TResult>
Категория Использование
Исправление является критическим или не критическим неразрывный
Включен по умолчанию в .NET 10 Как предупреждение
Применимые языки C# и Visual Basic

Причина

Значение 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 станет недопустимой и возникнут ошибки во время выполнения.