출처 : Pro C# 2008 and the .NET 3.5 Platform(4th Edition)
public class MyResourceWrapper : IDisposable
{
// Dispose() 메소드가 이미 호출 됐는지
private bool disposed = false;
public void Dispose()
{
// helper 메소드 호출
CleanUp(true);
// Dispose()가 이미 호출되었다면 가비지 컬렉터에
// 의해 destructor 다시 호출되지 않게 함
GC.SuppressFinalize(this);
}
private void CleanUp(bool disposing)
{
// 이미 Dispose()가 호출되었는지 확인한 후 진행
if (!this.disposed)
{
// disposing 플래그에 따라
// managed 리소스 해제
if (disposing)
{
// managed 리소스 해제
}
// unmanaged 리소스 해제
}
disposed = true;
}
~MyResourceWrapper()
{
// helper 메소드 호출
// 인자로 false를 넘겨서 가비지 컬렉터에 의해
// unmanaged 리소스가 해제 되도록 함
CleanUp(false);
}
}
'알고리즘' 카테고리의 다른 글
정규식 사용하기 (0) | 2013.04.11 |
---|---|
XML 간단 예제 (0) | 2013.04.11 |
C# 날짜관련 달력관련 (0) | 2012.01.15 |
고성능 알고리즘 탐구 (0) | 2009.05.07 |
XML Serializer 를 이용한 값 복사: 성능은 어떨까! (0) | 2009.04.23 |