Partilhar via


CA1849: Chamar métodos assíncronos quando em um método assíncrono

Property valor
ID da regra CA1849
Título Chamar métodos assíncronos quando em um método assíncrono
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 10 Não

Motivo

Todos os métodos em que existe um equivalente sufixo Async produzirão esse aviso quando chamados de um método de retorno de tarefa. Além disso, chamando Task.Wait(), Task<T>.Resultou Task.GetAwaiter().GetResult() produzirá este aviso.

Descrição da regra

Em um método que já é assíncrono, as chamadas para outros métodos devem ser para suas versões assíncronas, quando existirem.

Como corrigir violações

Violação:

Task DoAsync()
{
    file.Read(buffer, 0, 10);
}

Correção:

Aguarde a versão assíncrona do método:

async Task DoAsync()
{
    await file.ReadAsync(buffer, 0, 10);
}

Quando suprimir avisos

É seguro suprimir um aviso dessa regra no caso de haver dois caminhos de código separados para sincronização e código assíncrono, usando uma condição if. Além disso, se houver uma verificação para saber se a tarefa foi resolvida, é seguro usar métodos e propriedades de sincronização.

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 CA1849
// The code that's violating the rule is on this line.
#pragma warning restore CA1849

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

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

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

Consulte também