Compartilhar via


CA1849: Utilize métodos assíncronos ao trabalhar em um método assíncrono

Propriedade Valor
ID da regra CA1849
Título Chame métodos assíncronos dentro de um método assíncrono
Categoria Desempenho
Correção interruptiva ou sem interrupção Inquebrável
Habilitado por padrão no .NET 10 Não
Idiomas aplicáveis C# e Visual Basic

Causa

Todos os métodos para os quais existe um equivalente com sufixo Async gerarão este aviso quando chamados a partir de um método que retorna uma Tarefa. Além disso, chamar Task.Wait(), Task<T>.Resultou Task.GetAwaiter().GetResult() produzirá esse aviso.

Descrição da regra

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

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 se houver dois caminhos de código separados para os tipos síncrono e assíncrono, usando uma condição if. Além disso, se houver verificação de resolução da Tarefa, é seguro usar métodos e propriedades síncronos.

Suprimir um aviso

Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar 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 em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

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

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

Confira também