Udostępnij za pośrednictwem


CA2004: Usuń wywołania GC.Utrzymywania aktywności

TypeName

RemoveCallsToGCKeepAlive

CheckId

CA2004

Kategoria

Microsoft.Reliability

Zmiana kluczowa

Niekluczowa

Przyczyna

Klasy używają SafeHandle, ale wciąż zawierają wywołania GC.KeepAlive.

Opis reguły

Podczas konwersji do użycia SafeHandle, należy usunąć wszystkie wywołania GC.KeepAlive (obiektu).W tym przypadku, klasy nie powinny wywołać GC.KeepAlive,przy założeniu, że nie posiadają finalizatorów, ale korzystają z SafeHandle w celu uzupełnienia dojścia systemu operacyjnego.Chociaż koszt pozostawienia wywołania GC.KeepAlive mierzony w wydajności może być nieistotny, wrażenie że wywołanie GC.KeepAlive jest konieczne lub wystarczające do rozwiązania problemu okresu istnienia, który już nie istnieje powoduje, że kod jest bardziej skomplikowany.

Jak naprawić naruszenia

Usuń wywołania GC.KeepAlive.

Kiedy pominąć ostrzeżenia

Ostrzeżenie to można pominąć tylko, jeśli konwersja do użycia SafeHandle w danej klasie nie jest technicznie poprawna.