Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
| Propriété | Valeur |
|---|---|
| Identificateur de la règle | CA2025 |
| Titre | Ne pas passer d’instances « IDisposable » dans des tâches non supervisées |
| Catégorie | Fiabilité |
| Le correctif est cassant ou non cassant | Inaltérable |
| activé par défaut dans .NET 10 | Non |
La cause
Une IDisposable instance est passée dans une tâche non supervisée et potentiellement supprimée avant la fin de la tâche à l’aide de l’instance.
Description de la règle
Les tâches non supervisées qui utilisent IDisposable des instances peuvent utiliser ces instances longtemps après leur suppression. Vérifiez que les tâches utilisant ces instances sont terminées avant la suppression des instances.
Exemples
Les extraits de code suivants (et leurs équivalents Visual Basic) sont des violations de l’autorité de certification 2025 :
public Task DoSomethingAsync()
{
// Using statements and using blocks can both be violations.
using (var disposable = new DisposableThing())
{
return DoSomethingInternalAsync(disposable);
}
}
public async Task DoThingsAsync()
{
var disposable = new DisposableThing();
var task = DoSomethingInternalAsync(disposable);
// More code here.
dispose.Dispose();
// It's a violation if arguments are disposed before the task is awaited.
await task.ConfigureAwait(false);
}
Quand supprimer les avertissements
Supprimez ces avertissements si vous savez que les tâches se terminent à l’aide IDisposable d’instances avant qu’elles ne soient supprimées.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA2025
// The code that's violating the rule is on this line.
#pragma warning restore CA2025
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA2025.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.