CA2261: Använd ConfigureAwaitOptions.SuppressThrowing inte med Task<TResult>

Property Värde
Regel-ID CA2261
Title Använd inte ConfigureAwaitOptions.SuppressThrowing med Task<TResult>
Kategori Användning
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Som varning

Orsak

ConfigureAwaitOptions.SuppressThrowing Värdet skickas till Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).

Regelbeskrivning

Alternativet ConfigureAwaitOptions.SuppressThrowing stöds inte av den generiska Task<TResult>, eftersom det kan leda till att ett ogiltigt TResultreturneras. Den här regeln flaggar användningen av SuppressThrowing med Task<TResult> för att visa felet vid byggtid i stället för körningstid.

Så här åtgärdar du överträdelser

Casta Task<TResult> till en icke-generisk Task innan du anropar ConfigureAwait(ConfigureAwaitOptions).

Exempel

Följande kodfragment visar ett brott mot CA2261:

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

Följande kodfragment visar korrigeringen:

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

När fel ska ignoreras

Du bör inte ignorera varningar från den här regeln. Om uppgiften har felats eller avbrutits TResult är den ogiltig och orsakar körningsfel.