Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Property | Value |
|---|---|
| Identyfikator reguły | IDE0390, IDE0391 |
| Title | Ustaw metodę jako synchroniczną |
| Kategoria | Style |
| Podkategorii | Niepotrzebne reguły kodu (preferencje modyfikatora) |
| Zastosowane języki | C# |
| Options | Żadne |
Overview
Te reguły flagują async metody, które nie zawierają żadnych await wyrażeń. Aby uzyskać lepszą wydajność, usuń modyfikator async i dostosuj typ zwracany, ponieważ metoda async, która nigdy niczego nie await, działa synchronicznie, ale z narzutem asynchronicznej maszyny stanów.
Dwie reguły są przeznaczone dla różnych scenariuszy:
-
IDE0390: Zgłasza
asyncmetody, funkcje lokalne i wyrażenia lambda, które nie są implementacjami interfejsu ani przesłonięciami. -
IDE0391: Zgłasza
asyncmetody, które implementują składnik interfejsu lub przesłaniają metodę klasy bazowej.
Aby uniknąć przerywania możliwości wywołań await metody za pośrednictwem interfejsu, należy zachować ostrożność podczas stosowania poprawki do implementacji interfejsu lub przesłonięć. Usunięcie async może mieć różne implikacje behawioralne w tych przypadkach.
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");
}
Pomijanie ostrzeżenia
Jeśli chcesz pominąć tylko jedno naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable IDE0390
// The code that's violating the rule is on this line.
#pragma warning restore IDE0390
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.cs]
dotnet_diagnostic.IDE0390.severity = none
dotnet_diagnostic.IDE0391.severity = none
Aby wyłączyć wszystkie reguły stylu kodu, ustaw ważność dla kategorii Style na none w pliku konfiguracji.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.