Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Property | Value |
|---|---|
| Regel-ID | IDE0390, IDE0391 |
| Title | Methode synchroon maken |
| Categorie | Style |
| Subcategorie | Onnodige coderegels (wijzigingsvoorkeuren) |
| Toepasselijke talen | C# |
| Options | Geen |
Overview
Deze regels markeren async methoden die geen expressies bevatten await . Voor betere prestaties verwijdert u de async modifier en past u het returntype aan, omdat een async methode die nooit iets await synchronisch wordt uitgevoerd, maar wel met de overhead van de async-statusmachine.
De twee regels zijn gericht op verschillende scenario's:
-
IDE0390: Rapporteert
asyncmethoden, lokale functies en lambda-expressies die geen interface-implementaties of overschrijvingen zijn. -
IDE0391: rapporteert
asyncmethoden die een interfacelid implementeren of een basisklassemethode overschrijven.
Om te voorkomen dat de mogelijkheid voor aanroepers om de methode via de interface te await verloren gaat, moet u voorzichtig zijn bij het toepassen van de oplossing op interface-implementaties of overschrijvingen. Verwijderen async kan in die gevallen verschillende gedragseffecten hebben.
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");
}
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable IDE0390
// The code that's violating the rule is on this line.
#pragma warning restore IDE0390
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.
[*.cs]
dotnet_diagnostic.IDE0390.severity = none
dotnet_diagnostic.IDE0391.severity = none
Als u alle regels voor de codestijl wilt uitschakelen, stelt u de ernst voor de categorie Style in op none in het configuratiebestand.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Zie Hoe u codeanalysewaarschuwingen kunt onderdrukken voor meer informatie.