Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
CA2261: Não utilizar
| Propriedade | valor |
|---|---|
| ID da regra | CA2261 |
| Título | Não utilizar ConfigureAwaitOptions.SuppressThrowing com Task<TResult> |
| Categoria | Utilização |
| A correção causa interrupção ou não | Ininterrupto |
| Habilitado por padrão no .NET 10 | Como aviso |
| Línguas aplicáveis | C# e Visual Basic |
Motivo
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éricoTask<TResult>, uma vez que isso pode levar a retornar um TResult inválido. Esta regra sinaliza o uso de SuppressThrowing with Task<TResult> para revelar o erro em tempo de compilação em vez de em tempo de execução.
Como corrigir violações
Converta o Task<TResult> para um não genérico Task antes de chamar ConfigureAwait(ConfigureAwaitOptions).
Exemplo
O trecho de código a seguir mostra uma violação de CA2261:
Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
O trecho de código a seguir 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 avariada ou cancelada, TResult será inválida e causará erros em tempo de execução.