Rimuovere le chiamate a GC.KeepAlive
Aggiornamento: novembre 2007
TypeName |
RemoveCallsToGCKeepAlive |
CheckId |
CA2004 |
Categoria |
Microsoft.Reliability |
Breaking Change |
Non sostanziale |
Causa
Le classi utilizzano SafeHandle ma contengono ancora chiamate a GC.KeepAlive.
Descrizione della regola
Se si effettua la conversione all'utilizzo di SafeHandle, rimuovere tutte le chiamate a GC.KeepAlive (oggetto). In questo caso non sarebbe necessario per le classi chiamare GC.KeepAlive,presupponendo che esse non dispongano di un finalizzatore ma si affidino a SafeHandle per finalizzare il gestore OS al loro posto. Anche se le conseguenze dell'uscita in una chiamata a GC.KeepAlive potrebbero essere trascurabili in termini di prestazioni, la percezione che una chiamata a GC.KeepAlive sia necessaria o sufficiente a risolvere un problema di durata che potrebbe non esistere più rende particolarmente difficile la gestione del codice.
Correzione delle violazioni
Rimuovere le chiamate a GC.KeepAlive.
Esclusione di avvisi
È possibile escludere questo avviso solo se non è tecnicamente corretto effettuare la conversione all'utilizzo di SafeHandle nella propria classe.