객체가 더 이상 필요하지 않을 때 해제해야 하는 관리되지 않는 리소스가 포함된 클래스에서
이 인터페이스를 구현한다. 인터페이스는 객체가 보유한 리소스를 해제하는 Dispose() 메서드를
구현해야 한다.
public class MyClass : IDisposable
{
private IntPtr unmanagedResource;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
// Release managed resources here
}
// Release unmanaged resources here
if (unmanagedResource != IntPtr.Zero)
{
Marshal.FreeHGlobal(unmanagedResource);
unmanagedResource = IntPtr.Zero;
}
}
}
이 예제에서 MyClass 클래스는 IDisposable 인터페이스를 구현하여 관리되지 않는 리소스를 해제합니다.
'Dispose' 메서드는 관리되는 리소스와 관리되지 않는 리소스를 모두 해제하는 보호된 가상 'Dispose'
메서드를 호출합니다.