Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Property | Value |
|---|---|
| Regel-ID | IDE0390, IDE0391 |
| Title | Gör metoden synkron |
| Kategori | Style |
| Underkategori | Onödiga kodregler (modifierarinställningar) |
| Tillämpliga språk | C# |
| Options | Ingen |
Översikt
Dessa regler flaggar async metoder som inte innehåller några await uttryck. För bättre prestanda tar du bort modifieraren async och justerar returtypen, eftersom en async-metod som aldrig awaitreturnerar något körs synkront men med overheaden från async-tillståndsmaskinen.
De två reglerna är inriktade på olika scenarier:
-
IDE0390: Rapporterar
asyncmetoder, lokala funktioner och lambda-uttryck som inte är gränssnittsimplementeringar eller åsidosättningar. -
IDE0391: Rapporterar
asyncmetoder som implementerar en gränssnittsmedlem eller åsidosätter en basklassmetod.
Undvik att bryta uppringarnas förmåga till await metoden via gränssnittet genom att vara försiktig när du tillämpar korrigeringen på gränssnittsimplementeringar eller åsidosättningar. Borttagning async kan ha olika beteendemässiga konsekvenser i dessa fall.
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");
}
Undertryck en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan regeln.
#pragma warning disable IDE0390
// The code that's violating the rule is on this line.
#pragma warning restore IDE0390
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.
[*.cs]
dotnet_diagnostic.IDE0390.severity = none
dotnet_diagnostic.IDE0391.severity = none
Om du vill inaktivera alla regler i kodformat anger du allvarlighetsgraden för kategorin Style till none i konfigurationsfilen.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.