Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
CA2261: Não usar
| Propriedade | Valor |
|---|---|
| ID da regra | CA2261 |
| Título | Não use ConfigureAwaitOptions.SuppressThrowing com Task<TResult> |
| Categoria | Usage |
| Correção interruptiva ou sem interrupção | Sem interrupção |
| Habilitado por padrão no .NET 10 | Como aviso |
Causa
Um valor de ConfigureAwaitOptions.SuppressThrowing é passado para Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).
Descrição da regra
A opção ConfigureAwaitOptions.SuppressThrowing não é compatível com o genérico Task<TResult>, pois isso pode levar ao retorno de um TResult inválido. Essa regra sinaliza o uso de SuppressThrowing com Task<TResult> para exibir o erro no tempo de compilação em vez de no tempo de execução.
Como corrigir violações
Converta o Task<TResult> em um Task não genérico antes de chamar ConfigureAwait(ConfigureAwaitOptions).
Exemplo
O snippet de código a seguir mostra uma violação da CA2261:
Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
O seguinte snippet de código mostra a correção:
Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
Quando suprimir erros
Você não deve suprimir avisos dessa regra. Se a tarefa for com falha ou cancelada, TResult será inválida e causará erros de runtime.