4
GC.SuppressFinalize(object)
을 여러 번 호출하면 어떤 단점이 있습니까?
보호 Dispose(bool)
방법 처분 패턴은 이전에 호출되었는지 여부를 확인하지만 공개 Dispose()
메소드에서 이러한 검사가 없습니다.SuppressFinalize를 여러 번 호출하는 경우
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (_Disposed)
return;
if (disposing)
{
// Cleanup managed resources.
}
// Cleanup unmanaged resources.
_Disposed = true;
}
~MyClass() { Dispose(false); }
그것은 MyClass
인스턴스를 여러 차례의 Dispose()
메서드를 호출 괜찮인가?
다른 선택 사항이없는 경우가 아니면 GC를 귀찮게하지 마십시오. – Leri
하나의 사실을 분명히하고 싶습니다. 관리되지 않는 리소스를 처리해야하는 경우에만 파이널 라이저가 필요합니다 (또는 파이널 라이 제이션에 의존하는 괴팍한 캐싱 스키마를 실행하는 경우). – usr
@PLB :하지 않으려 고 노력합니다. –