CA2004 : Supprimez les appels à GC.KeepAliveCA2004: Remove calls to GC.KeepAlive

TypeNameTypeName RemoveCallsToGCKeepAliveRemoveCallsToGCKeepAlive
CheckIdCheckId CA2004CA2004
CategoryCategory Microsoft.ReliabilityMicrosoft.Reliability
Modification avec ruptureBreaking Change Sans ruptureNon-breaking

CauseCause

Classes utilisent SafeHandle mais contiennent toujours des appels à GC.KeepAlive.Classes use SafeHandle but still contain calls to GC.KeepAlive.

Description de la règleRule description

Si vous convertissez en SafeHandle utilisation, supprimez tous les appels à GC.KeepAlive (objet).If you are converting to SafeHandle usage, remove all calls to GC.KeepAlive (object). Dans ce cas, les classes ne requièrent pas d’appeler GC.KeepAlive, en supposant qu’elles n’ont pas de finaliseur, mais dépendent SafeHandle pour terminer le handle du système d’exploitation pour eux.In this case, classes should not have to call GC.KeepAlive,assuming they do not have a finalizer but rely on SafeHandle to complete the OS handle for them. Bien que le coût de laisser dans un appel à GC.KeepAlive peut être négligeable en termes de performances, la perception qui un appel à GC.KeepAlive est nécessaire ou suffit à résoudre le problème qui ne peut plus exister rend le code plus difficile pour une durée de vie mettre à jour.Although the cost of leaving in a call to GC.KeepAlive might be negligible as measured by performance, the perception that a call to GC.KeepAlive is either necessary or sufficient to solve a lifetime issue that might no longer exist makes the code harder to maintain.

Comment corriger les violationsHow to fix violations

Supprimez les appels à GC.KeepAlive.Remove calls to GC.KeepAlive.

Quand supprimer les avertissementsWhen to suppress warnings

Vous pouvez supprimer cet avertissement uniquement si elle n’est pas techniquement correcte convertir SafeHandle utilisation dans votre classe.You can suppress this warning only if it is not technically correct to convert to SafeHandle usage in your class.