CA2004 : Supprimez les appels à GC.KeepAlive

Élément Valeur
ID de la règle CA2004
Category Microsoft.Reliability
Modification avec rupture Sans rupture

Cause

Les classes utilisent SafeHandle mais contiennent quand même des appels à GC.KeepAlive.

Description de la règle

Si vous effectuez une conversion vers l’utilisation de SafeHandle, supprimez tous les appels à GC.KeepAlive (objet). Dans ce cas, les classes ne doivent pas avoir à appeler GC.KeepAlive, en supposant qu’elles n’ont pas de finaliseur, mais qu’elles s’appuient sur SafeHandle pour terminer le handle de système d’exploitation pour elles. Bien que le coût d’une sortie dans un appel à GC.KeepAlive puisse être négligeable comme mesuré par les performances, la perception qu’un appel à GC.KeepAlive est nécessaire ou suffisant pour résoudre un problème de durée de vie qui n’existe plus rend la maintenance du code plus difficile.

Comment corriger les violations

Supprimez les appels à GC.KeepAlive.

Quand supprimer les avertissements

Vous pouvez supprimer cet avertissement uniquement s’il n’est pas techniquement correct d’effectuer une conversion vers l’utilisation de SafeHandle dans votre classe.