Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
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 станет недопустимой и возникнут ошибки во время выполнения.