Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
CA2261: не используйте
| Свойство | Значение |
|---|---|
| Идентификатор правила | 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 станет недопустимой и возникнут ошибки во время выполнения.