Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| 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
asyncMethoden, lokale Funktionen und Lambda-Ausdrücke, die keine Schnittstellenimplementierungen oder Außerkraftsetzungen sind. -
IDE0391: Meldet
asyncMethoden, 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.