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 9 | 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 TResult
returneras. 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.