Rendere il metodo sincrono (IDE0390 e IDE0391)

Proprietà Value
ID regola IDE0390, IDE0391
Titolo Rendere sincrono il metodo
Categoria Style
Sottocategoria Regole di codice non necessarie (preferenze del modificatore)
Linguaggi applicabili C#
Opzioni Nessuno

Overview

Queste regole segnalano i metodi async che non contengono alcuna espressione await. Per migliorare le prestazioni, rimuovere il modificatore async e adattare il tipo restituito, perché un metodo async che non await mai nulla viene eseguito in modo sincrono, ma con il sovraccarico della macchina a stati async.

Le due regole hanno come destinazione diversi scenari:

  • IDE0390: segnala async metodi, funzioni locali ed espressioni lambda che non sono implementazioni o override dell'interfaccia.
  • IDE0391: segnala async metodi che implementano un membro dell'interfaccia o eseguono l'override di un metodo di classe base.

Per evitare di compromettere la possibilità per i chiamanti di richiamare il metodo await tramite l'interfaccia, prestare attenzione quando si applica la correzione alle implementazioni dell'interfaccia o alle sovrascritture. La rimozione async può avere implicazioni comportamentali diverse in questi casi.

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");
}

Eliminare un avviso

Se si desidera eliminare solo una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .

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

Per disabilitare tutte le regole in stile codice, impostare la gravità per la categoria Style su none nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedere anche