CA2261: Niet gebruiken ConfigureAwaitOptions.SuppressThrowing
met Task<TResult>
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA2261 |
Titel | Niet gebruiken ConfigureAwaitOptions.SuppressThrowing met Task<TResult> |
Categorie | Gebruik |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Als waarschuwing |
Oorzaak
Er wordt een waarde ConfigureAwaitOptions.SuppressThrowing doorgegeven aan Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).
Beschrijving van regel
De ConfigureAwaitOptions.SuppressThrowing optie wordt niet ondersteund door de algemene Task<TResult>, omdat dit kan leiden tot het retourneren van een ongeldige TResult
. Deze regel markeert het gebruik van met Task<TResult> om de fout tijdens de build-tijd weer te geven in plaats van SuppressThrowing runtime.
Schendingen oplossen
Cast het Task<TResult> naar een niet-algemeen Task voordat u belt ConfigureAwait(ConfigureAwaitOptions).
Opmerking
In het volgende codefragment ziet u een schending van CA2261:
Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
In het volgende codefragment ziet u de oplossing:
Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
Wanneer fouten onderdrukken
U moet waarschuwingen van deze regel niet onderdrukken. Als de taak is beschadigd of geannuleerd, TResult
is deze ongeldig en veroorzaakt dit runtimefouten.