다음을 통해 공유


CA2004: GC.KeepAlive에 대한 호출을 제거하십시오.

TypeName

RemoveCallsToGCKeepAlive

CheckId

CA2004

범주

Microsoft.Reliability

변경 수준

주요 변경 아님

원인

클래스에서 SafeHandle을 사용하지만 클래스에 아직 GC.KeepAlive에 대한 호출이 포함되어 있습니다.

규칙 설명

SafeHandle을 사용하는 방식으로 변환하는 경우 GC.KeepAlive (개체)에 대한 모든 호출을 제거해야 합니다. 이 경우 클래스에 종료자가 없지만 SafeHandle을 사용하여 OS 핸들을 완료하는 것으로 간주하므로 클래스에서 GC.KeepAlive, 를 호출할 필요가 없습니다. GC.KeepAlive에 대한 호출을 남겨두는 경우 성능에 미치는 영향이 미미할 수 있지만 GC.KeepAlive 호출이 더 이상 존재하지 않을 수 있는 수명 문제를 해결하는 데 필요하거나 충분하다는 인식은 코드를 유지 관리하기 어렵게 만듭니다.

위반 문제를 해결하는 방법

GC.KeepAlive에 대한 호출을 제거합니다.

경고를 표시하지 않는 경우

클래스에서 SafeHandle을 사용하도록 변환하는 것이 기술적으로 올바르지 않은 경우에만 이 경고를 표시하지 않을 수 있습니다.