Supprimer les appels à GC.KeepAlive
Mise à jour : novembre 2007
TypeName |
RemoveCallsToGCKeepAlive |
CheckId |
CA2004 |
Catégorie |
Microsoft.Reliability |
Modification avec rupture |
Modification sans rupture |
Cause
Les classes utilisent SafeHandle, mais contiennent toujours des appels à GC.KeepAlive.
Description de la règle
Si vous envisagez d'utiliser SafeHandle, supprimez tous les appels à GC.KeepAlive (objet). Dans ce cas, les classes ne requièrent pas d'appels à GC.KeepAlive,en supposant qu'elles ne disposent pas d'un finaliseur, mais dépendent de SafeHandle pour finaliser le handle du système d'exploitation à leur place. Bien que le coût lié à l'abandon d'un appel à GC.KeepAlive puisse être négligeable en termes de performances, la perception selon laquelle un appel à GC.KeepAlive est nécessaire ou suffisant pour résoudre un problème de durée de vie qui ne peut plus exister rend le code plus difficile à gérer.
Comment corriger les violations
Supprimez les appels à GC.KeepAlive.
Quand supprimer les avertissements
Vous pouvez supprimer cet avertissement uniquement si l'utilisation de SafeHandle dans votre classe n'est pas correcte, du point de vue technique.