Methode synchron machen (IDE0390 und IDE0391)

Property Wert
Regel-ID IDE0390, IDE0391
Title Methode synchron machen
Kategorie Style
Unterkategorie Unnötige Coderegeln (Modifizierereinstellungen)
Anwendbare Sprachen C#
Options Nichts

Übersicht

Diese Regeln markieren async-Methoden, die keine await-Ausdrücke enthalten. Um eine bessere Leistung zu erzielen, entfernen Sie den async-Modifizierer und passen Sie den Rückgabetyp an, da eine async-Methode, die nie etwas await, synchron ausgeführt wird, aber mit dem Overhead der asynchronen Zustandsmaschine.

Die beiden Regeln zielen auf unterschiedliche Szenarien ab:

  • IDE0390: Meldet async Methoden, lokale Funktionen und Lambda-Ausdrücke, die keine Schnittstellenimplementierungen oder Außerkraftsetzungen sind.
  • IDE0391: Meldet async Methoden, die ein Schnittstellenelement implementieren oder eine Basisklassenmethode außer Kraft setzen.

Um zu vermeiden, dass die Aufrufer zu await die Methode über die Schnittstelle nicht mehr aufrufen können, ist beim Anwenden der Korrektur auf Schnittstellenimplementierungen oder -überschreibungen Vorsicht geboten. async Das Entfernen kann in diesen Fällen unterschiedliche Verhaltensauswirkungen haben.

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

Unterdrücken einer Warnung

Wenn Sie nur einen einzelnen Verstoß unterdrücken möchten, fügen Sie Ihrer Quelldatei Präprozessordirektiven hinzu, um die Regel zu deaktivieren und dann erneut zu aktivieren.

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

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad auf none in der Konfigurationsdatei fest.

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

Um alle Codestilregeln zu deaktivieren, legen Sie den Schweregrad für die Kategorie Style auf none in der Konfigurationsdatei fest.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch