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

Property Valor
ID da regra IDE0390, IDE0391
Title Tornar o método síncrono
Category Style
Subcategoria Regras de código desnecessárias (preferências do modificador)
Línguas aplicáveis C#
Options None

Descrição geral

Estas regras sinalizam async métodos que não contêm expressões await . Para melhor desempenho, remove o modificador async e ajusta o tipo de retorno, porque um método async que nunca await 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: Relatórios async de métodos, funções locais e expressões lambda que não são implementações de interface ou sobreposições.
  • IDE0391: Reporta async métodos que implementam um membro de interface ou sobrepõem um método de classe base.

Para evitar que os chamadores await acedam ao método através da interface, tenha cautela ao aplicar a correção a implementações ou sobrescrições da interface. A remoção async pode ter diferentes implicações comportamentais 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 arquivo de origem para desativar e, em seguida, reativar a regra.

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

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade 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