Partager via


CA2004 : Supprimez les appels à GC.KeepAlive

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 devraient pas avoir besoin d'appeler GC.KeepAlive, si elles ne disposent pas d'un finaliseur, mais comptent sur SafeHandle pour finaliser le handle du système d'exploitation. 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.