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을 사용하도록 변환하는 것이 기술적으로 올바르지 않은 경우에만 이 경고를 표시하지 않을 수 있습니다.