CA2012: Poprawnie użyj wartościTasks
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA2012 |
Tytuł | Poprawnie używaj elementów ValueTask |
Kategoria | Niezawodność |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Jako sugestia |
Przyczyna
Wystąpienie ValueTask zwrócone z wywołania elementu członkowskiego jest używane w sposób, który może prowadzić do wyjątków, uszkodzenia lub niskiej wydajności.
Opis reguły
ValueTask wystąpienia zwracane z wywołań składowych mają być bezpośrednio oczekiwane. Próby wielokrotnego korzystania z elementu ValueTask lub bezpośredniego uzyskania dostępu do wyniku, zanim wiadomo, że zostanie ukończone, mogą spowodować wyjątek lub uszkodzenie. Ignorowanie takiej wartościTask jest prawdopodobnie wskazaniem usterki funkcjonalnej i może obniżyć wydajność.
Jak naprawić naruszenia
Ogólnie rzecz biorąc, funkcja ValueTasks powinna być bezpośrednio oczekiwana, a nie odrzucana lub przechowywana w innych lokalizacjach, takich jak zmienne lokalne lub pola.
Kiedy pomijać ostrzeżenia
W przypadku ValueTask
obiektów zwracanych z dowolnych wywołań składowych obiekt wywołujący musi przyjąć, że ValueTask
element musi być używany (na przykład oczekiwany) raz i tylko raz. Jeśli jednak deweloper kontroluje również wywoływany element członkowski i ma pełną wiedzę na temat jego implementacji, deweloper może wiedzieć, że można bezpiecznie pominąć ostrzeżenie, na przykład jeśli zwracany ValueTask
element zawsze opakowuje Task obiekt.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA2012
// The code that's violating the rule is on this line.
#pragma warning restore CA2012
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA2012.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.