2012-09-15 3 views
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() 메서드를 호출 괜찮인가?

+0

다른 선택 사항이없는 경우가 아니면 GC를 귀찮게하지 마십시오. – Leri

+0

하나의 사실을 분명히하고 싶습니다. 관리되지 않는 리소스를 처리해야하는 경우에만 파이널 라이저가 필요합니다 (또는 파이널 라이 제이션에 의존하는 괴팍한 캐싱 스키마를 실행하는 경우). – usr

+0

@PLB :하지 않으려 고 노력합니다. –

답변

관련 문제