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

Vlastnost Hodnota
ID pravidla CA2261
Název Nepoužívejte ConfigureAwaitOptions.SuppressThrowing s Task<TResult>
Kategorie Využití
Oprava, která může být destruktivní nebo nedestruktivní Nezlomitelný
Povoleno ve výchozím nastavení v .NET 10 Jako upozornění
Příslušné jazyky C# a Visual Basic

Příčina

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

Popis pravidla

Obecné Task<TResult> nepodporuje možnost ConfigureAwaitOptions.SuppressThrowing, protože to může vést k vrácení neplatného TResult. Toto pravidlo označuje použití SuppressThrowing spolu s Task<TResult> k identifikaci chyby během doby sestavení namísto doby běhu.

Jak opravit porušení

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

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.