Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| 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
asyncmetodi, funzioni locali ed espressioni lambda che non sono implementazioni o override dell'interfaccia. -
IDE0391: segnala
asyncmetodi 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.