Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| 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
asyncde métodos, funções locais e expressões lambda que não são implementações de interface ou sobreposições. -
IDE0391: Reporta
asyncmé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.