CA2261: Nepoužívejte ConfigureAwaitOptions.SuppressThrowing s Task<TResult>

Vlastnost Hodnota
ID pravidla CA2261
Název Nepoužívejte s ConfigureAwaitOptions.SuppressThrowingTask<TResult>
Kategorie Využití
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 8 Jako upozornění

Příčina

Hodnota ConfigureAwaitOptions.SuppressThrowing je předána Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).

Popis pravidla

Obecná ConfigureAwaitOptions.SuppressThrowing možnost nepodporuje Task<TResult>, protože to může vést k vrácení neplatného TResultkódu . Toto pravidlo označí použití funkce k SuppressThrowingTask<TResult> zobrazení chyby v době sestavení místo doby běhu.

Jak opravit porušení

Task<TResult> Před voláním ConfigureAwait(ConfigureAwaitOptions)přetypujte na jiný než obecný Task .

Příklad

Následující fragment kódu ukazuje porušení ca2261:

Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);

Následující fragment kódu ukazuje opravu:

Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);

Kdy potlačit chyby

Upozornění z tohoto pravidla byste neměli potlačit. Pokud je úloha chybná nebo zrušená, TResult bude neplatná a způsobí chyby za běhu.