Remark:
.NET Framework에서 새로운 클래스를 만들 때 여러가지 메모리 관리 디자인 패턴과 기법을 적용할 수 있지만, 한시적으로 사용해야 할 필요가 있는 자원들을 묶어서 관리할 때에는 IDisposable 패턴을 적극적으로 활용하는 것이 매우 유용합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
public class DisposableSample : IDisposable { public DisposableSample() { } ~DisposableSample() { this.Dispose(false); } private bool disposed; public void Dispose() { this.Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (this.disposed) return; if (disposing) { // IDisposable 인터페이스를 구현하는 멤버들을 여기서 정리합니다. } // .NET Framework에 의하여 관리되지 않는 외부 리소스들을 여기서 정리합니다. this.disposed = true; } } |