Partilhar via


CA2012: Usar ValueTasks corretamente

Property valor
ID da regra CA2012
Título Usar ValueTasks corretamente
Categoria Fiabilidade
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 9 Como sugestão

Motivo

Uma ValueTask instância retornada de uma invocação de membro é usada de uma forma que pode levar a exceções, corrupção ou mau desempenho.

Descrição da regra

ValueTask As instâncias retornadas de invocações de membros devem ser aguardadas diretamente. Tentativas de consumir um ValueTask várias vezes ou acessar diretamente o resultado antes que se saiba que ele foi concluído podem resultar em uma exceção ou corrupção. Ignorar tal ValueTask é provavelmente uma indicação de um bug funcional e pode degradar o desempenho.

Como corrigir violações

Em geral, ValueTasks deve ser aguardado diretamente em vez de descartado ou armazenado em outros locais, como variáveis ou campos locais.

Quando suprimir avisos

Para ValueTask objetos retornados de chamadas de membros arbitrárias, o chamador precisa assumir que o deve ser consumido ValueTask (por exemplo, aguardado) uma vez e apenas uma vez. No entanto, se o desenvolvedor também controla o membro que está sendo invocado e tem conhecimento completo de sua implementação, o desenvolvedor pode saber que é seguro suprimir o aviso, por exemplo, se o retorno ValueTask sempre envolver um Task objeto.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.

#pragma warning disable CA2012
// The code that's violating the rule is on this line.
#pragma warning restore CA2012

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA2012.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também