앞서 비관리 리소스를 포함하는 객체는 정리 작업이 매우 중요하다고 이야기한 바 있다. 이제 메모리
가 아닌 다른 유형의 비관리 리소스를 포함하는 타입을 작성할 때 리소스 관리를 어떻게 해야 할지를
살펴볼 차례다. 이미 .NET Framework 내부에서는 비관리 리소스를 정리하는 표준화된 패턴을
사용하고 있으므로 새로운 타입을 만들 때도 동일한 패턴을 이용하는 것이 좋다. 이는 Dispose 패턴
으로 알려져 있다. 타입을 작성할 때 이 패턴을 이용하면 개발자들에게 IDisposable 인터페이스를
통해서 리소스를 삭제할 수 있는 기능을 안정적으로 제공할 수 있다. 게다가 비관리 리소스를 명시적
으로 정리해야 한다는 사실을 잊어버리거나 인지하지 못한 경우에도 finalizer를 통해 올바르게
리소스가 정리될 수 있도록 해준다. 표준 Dispose 패턴은 가비지 수집기와 연계되어 동작하며 불가
피한 경우에만 finalizer를 호출하도록 하여 성능에 미치는 부정적인 영향을 최소화한다. 이 패턴은
비관리 리소스를 다루기 위한 가장 효과적인 방법으로 알려져 있으므로 .NET 개발자라면 철저하게
그 내용을 이해해야만 한다. 실제로 .NET에서는 비관리 리소스를
System.Runtime.Interop.SafeHandel을 상속한 파생 클래스를 통해 표현하는데 이 클래스 또한
Dispose 패턴을 완벽하게 구현하고 있다.
상속 계통상 최상위의 베이스 클래스는 다음과 같은 작업을 수행해야 한다.