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.