Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
CA2261: Använd
| Egenskap | Värde |
|---|---|
| Regel-ID | CA2261 |
| Title | Använd inte ConfigureAwaitOptions.SuppressThrowing med Task<TResult> |
| Kategori | Användning |
| Korrigeringen är antingen invasiv eller icke-invasiv | Oumbrytbar |
| Aktiverad som standard i .NET 10 | Som varning |
| Tillämpliga språk | C# och Visual Basic |
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 identifiera felet vid bygget i stället för under körning.
Så här åtgärdar du överträdelser
Konvertera 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 man ska undertrycka fel
Du bör inte ignorera varningar från den här regeln. Om uppgiften är felslagen eller avbruten kommer TResult att vara ogiltig och orsaka körningsfel.