Partilhar via


CA2261: Não utilizar ConfigureAwaitOptions.SuppressThrowing com Task<TResult>

Property valor
ID da regra CA2261
Título Não utilizar ConfigureAwaitOptions.SuppressThrowing com Task<TResult>
Categoria Utilização
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 10 Como aviso

Motivo

Um valor de ConfigureAwaitOptions.SuppressThrowing é passado para Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).

Descrição da regra

A ConfigureAwaitOptions.SuppressThrowing opção não é suportada pelo genéricoTask<TResult>, uma vez que isso pode levar à devolução de um arquivo .TResult 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.