CA2261: Nie używaj z ConfigureAwaitOptions.SuppressThrowingTask<TResult>

Właściwości Wartość
Identyfikator reguły CA2261
Tytuł Nie należy używać z ConfigureAwaitOptions.SuppressThrowingTask<TResult>
Kategoria Użycie
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 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 TResultelementu . 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.