Freigeben über


CA2004: Aufrufe an GC.KeepAlive entfernen

TypeName

RemoveCallsToGCKeepAlive

CheckId

CA2004

Kategorie (Category)

Microsoft.Reliability

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Klassen verwenden SafeHandle, enthalten jedoch trotzdem Aufrufe von GC.KeepAlive.

Regelbeschreibung

Wenn Sie zur Verwendung von SafeHandle wechseln, entfernen Sie alle Aufrufe von GC.KeepAlive (Objekt).In diesem Fall sollten Klassen GC.KeepAlive nicht aufrufen müssen, vorausgesetzt, sie weisen keinen Finalizer auf, sondern verwenden zum Beenden des Betriebssystemhandles SafeHandle. Die Leistungseinbußen, die entstehen, wenn ein Aufruf von GC.KeepAlive nicht entfernt wird, sind zwar unwesentlich, wenn aber von der Annahme ausgegangen wird, ein Aufruf von GC.KeepAlive könnte erforderlich oder ausreichend sein, um ein möglicherweise gar nicht mehr bestehendes Lebensdauerproblem zu lösen, wird die Verwaltung des Codes erschwert.

Behandeln von Verstößen

Entfernen Sie Aufrufe von GC.KeepAlive.

Wann sollten Warnungen unterdrückt werden?

Sie können diese Warnung nur unterdrücken, wenn es technisch falsch ist, in einer Klasse zur Verwendung von SafeHandle zu wechseln.