Delen via


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 8 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.