CA2261: Nie używaj z ConfigureAwaitOptions.SuppressThrowing
Task<TResult>
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA2261 |
Tytuł | Nie należy używać z ConfigureAwaitOptions.SuppressThrowing Task<TResult> |
Kategoria | Użycie |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Jako ostrzeżenie |
Przyczyna
Wartość jest przekazywana ConfigureAwaitOptions.SuppressThrowing do Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).
Opis reguły
Ta ConfigureAwaitOptions.SuppressThrowing opcja nie jest obsługiwana przez ogólny Task<TResult>element , ponieważ może to prowadzić do zwrócenia nieprawidłowego TResult
elementu . Ta reguła flaguje użycie polecenia z Task<TResult> , SuppressThrowing aby wyświetlić błąd w czasie kompilacji, a nie czas wykonywania.
Jak naprawić naruszenia
Przed wywołaniem metody ConfigureAwait(ConfigureAwaitOptions)należy rzutować element Task<TResult> do elementu innego niż ogólnyTask.
Przykład
Poniższy fragment kodu przedstawia naruszenie ca2261:
Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
Poniższy fragment kodu przedstawia poprawkę:
Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
Kiedy pomijać błędy
Nie należy pomijać ostrzeżeń z tej reguły. Jeśli zadanie zostało uszkodzone lub anulowane, TResult
będzie nieprawidłowe i spowoduje błędy czasu wykonywania.