Tornar o método síncrono (IDE0390 e IDE0391)

Property Valor
ID da regra IDE0390, IDE0391
Título Tornar o método síncrono
Categoria Style
Subcategoria Regras de código desnecessárias (preferências do modificador)
Idiomas aplicáveis C#
Opções None

Visão geral

Essas regras sinalizam async métodos que não contêm expressões await . Para melhor desempenho, remova o modificador async e ajuste o tipo de retorno, pois um método async que nunca awaitretorna nada é executado de forma síncrona, mas com a sobrecarga da máquina de estados assíncrona.

As duas regras visam cenários diferentes:

  • IDE0390: relata async métodos, funções locais e expressões lambda que não são implementações ou substituições de interface.
  • IDE0391: relata async métodos que implementam um membro de interface ou substituem um método de classe base.

Para evitar quebrar a capacidade dos chamadores de await acessar o método por meio da interface, tenha cuidado ao aplicar a correção a implementações ou substituições de interfaces. A remoção async pode ter implicações comportamentais diferentes nesses casos.

Example

// Code with violations.

// IDE0390: Regular method with no 'await'.
public async Task<int> GetValueAsync()
{
    return 42;
}

// IDE0391: Override method with no 'await'.
public override async Task<string> GetNameAsync()
{
    return "example";
}

// Fixed code.

// Remove 'async' and return the value directly.
public Task<int> GetValueAsync()
{
    return Task.FromResult(42);
}

// Remove 'async' and return the value directly.
public override Task<string> GetNameAsync()
{
    return Task.FromResult("example");
}

Suprimir um aviso

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

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

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

[*.cs]
dotnet_diagnostic.IDE0390.severity = none
dotnet_diagnostic.IDE0391.severity = none

Para desabilitar todas as regras de estilo de código, defina a severidade da categoria Style como none no arquivo de configuração.

[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none

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

Consulte também