Поделиться через


CA2004: удалите вызовы GC.KeepAlive

TypeName

RemoveCallsToGCKeepAlive

CheckId

CA2004

Категория

Microsoft.Reliability

Критическое изменение

Не критическое

Причина

Классы используют класс SafeHandle, однако по-прежнему содержат вызовы метода GC.KeepAlive.

Описание правила

При переходе к использованию класса SafeHandle необходимо удалить все вызовы метода GC.KeepAlive (объект). В этом случае классам не требуется вызывать метод GC.KeepAlive, поскольку для завершения дескриптора ОС они используют не метод завершения, а класс SafeHandle. Хотя затраты на оставшиеся вызовы метода GC.KeepAlive почти не влияют на производительность, однако идея того, что вызов метода GC.KeepAlive является необходимым или достаточным для устранения проблемы времени существования, которая больше не существует, приводит к усложнению поддержки кода.

Устранение нарушений

Удалите вызовы метода GC.KeepAlive.

Отключение предупреждений

Это предупреждение можно отключить только в том случае, если для данного класса переход к использованию SafeHandle технически не осуществим.