CA2261 : Ne pas utiliser ConfigureAwaitOptions.SuppressThrowing
avec Task<TResult>
Propriété | Value |
---|---|
Identificateur de la règle | CA2261 |
Titre | Ne pas utiliser ConfigureAwaitOptions.SuppressThrowing avec Task<TResult> |
Catégorie | Utilisation |
Le correctif est cassant ou non cassant | Sans rupture |
Activée par défaut dans .NET 9 | Comme avertissement |
Cause
Une valeur de ConfigureAwaitOptions.SuppressThrowing est passée à Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).
Description de la règle
L’option ConfigureAwaitOptions.SuppressThrowing n’est pas prise en charge par le Task<TResult> générique, car cela peut entraîner le renvoi d’un TResult
non valide. Cette règle signale l’utilisation de SuppressThrowing avec Task<TResult> pour exposer l’erreur au moment de la génération et non de l’exécution.
Comment corriger les violations
Castez Task<TResult> vers un Task non générique avant d’appeler ConfigureAwait(ConfigureAwaitOptions).
Exemple
L’extrait de code suivant montre une violation de CA2261 :
Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
L’extrait de code suivant montre le correctif :
Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
Quand supprimer les erreurs
Vous ne devez supprimer aucun avertissement de cette règle. Si la tâche est défectueuse ou annulée, TResult
n’est pas valide et provoque des erreurs d’exécution.