CA2261: Niet gebruiken ConfigureAwaitOptions.SuppressThrowing met Task<TResult>

Eigenschap Waarde
Regel-id CA2261
Titel Gebruik geen ConfigureAwaitOptions.SuppressThrowing met Task<TResult>.
Categorie Gebruik
Fix kan brekend of niet-brekend zijn Niet-brekend
Standaard ingeschakeld in .NET 10 Als waarschuwing
Toepasselijke talen C# en Visual Basic

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 SuppressThrowing met Task<TResult> zodat de fout tijdens de bouwtijd zichtbaar wordt in plaats van tijdens runtime.

Hoe schendingen op te lossen

Cast het Task<TResult> naar een niet-generiek Task voordat u ConfigureAwait(ConfigureAwaitOptions) aanroept.

Voorbeeld

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.