Поделиться через


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