Udostępnij za pośrednictwem


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 8 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.

Zobacz też