본문 바로가기
개발/기본) 기본기

.Net)c#) IDisposable 사용하기

by 테샤르 2023. 6. 29.

 IDisposable 사용하기

 

'IDisposable'은 관리되지 않는 리소스를 해제하는 메커니즘을 제공하는 .NET 프레임워크의 인터페이스로. .NET 가비지 수집기는 파일 핸들, 창 핸들, 네트워크 소켓, 데이터베이스 연결 등과 같은 관리되지 않는 리소스를 직접 해제하지 않아서 가비지 수집기(GC)를 돕기 위해 클래스에 이러한 유형의 리소스를 사용해서 해제하거나 다시 사용하ㅏㄹ 개체를 준비하는 모든 작업에 사용 한다.


IDisposable 인터페이스에는 정리 코드를 포함하도록 구현되는 Dispose라는 단일 메서드가 포함되어 있다. IDisposable을 구현하는 개체 작업을 마쳤으면 해당 Dispose 메서드를 호출해야 한다. 이렇게 하게되면 개체가 보유하고 있는 모든 리소스를 해제할 수 있으므로 메모리 누수를 방지하는 데 도움이 된다.


< 예시 >

public class MyResource: IDisposable
{
    //Imagine this is some large unmanaged resource.
    private bool _disposed = false;

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!_disposed)
        {
            if (disposing)
            {
                // Free managed resources
            }
            // Free unmanaged resources
            _disposed = true;
        }
    }

    //Finalizer
    ~MyResource()
    {
        Dispose(false);
    }
}

 

Microsoft IDisposable을 구현하는 개체 사용 : [링크]

 

IDisposable을 구현하는 개체 사용

.NET에서 IDisposable 인터페이스를 구현하는 개체를 사용하는 방법을 알아봅니다. 비관리형 리소스를 사용하는 유형은 IDisposable을 구현하여 리소스 회수를 허용합니다.

docs.microsoft.com

Microsoft IDisposable : [링크]

 

IDisposable.Dispose 메서드 (System)

관리되지 않는 리소스의 확보, 해제 또는 다시 설정과 관련된 애플리케이션 정의 작업을 수행합니다.Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

docs.microsoft.com

 

 

★☆☆☆☆

 

반응형

댓글