Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Property | Valor |
|---|---|
| ID da regra | CA1849 |
| Título | Chamar métodos assíncronos quando em um método assíncrono |
| Categoria | Desempenho |
| Correção interruptiva ou sem interrupção | Sem interrupção |
| Habilitado por padrão no .NET 10 | Não |
Causa
Todos os métodos em que houver um equivalente Async com sufixo produzirão esse aviso quando chamados de um método de retorno de 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-se 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.