CA2261: Nepoužívejte ConfigureAwaitOptions.SuppressThrowing
s Task<TResult>
Vlastnost | Hodnota |
---|---|
ID pravidla | CA2261 |
Název | Nepoužívejte s ConfigureAwaitOptions.SuppressThrowing Task<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 9 | 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 TResult
kódu . Toto pravidlo označí použití funkce k SuppressThrowing Task<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.