Condividi tramite


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.