차례:
정의-Dispose는 무엇을 의미합니까?
C #의 맥락에서 dispose는 메모리 정리에 필요한 코드를 실행하고 파일 핸들 및 데이터베이스 연결과 같은 관리되지 않는 리소스를 해제 및 재설정하기 위해 호출되는 개체 메서드입니다. Dispose는 Windows 공간이 제한된 응용 프로그램에 사용되는 GDI (Graphics Device Interface) 핸들과 같이 관리 할 수없는 개체와 부족한 리소스를 제공하여 성능을 향상시키고 메모리를 최적화합니다.
IDisposable 인터페이스에서 제공하는 Dispose 메서드는 Dispose 호출을 구현합니다. Dispose 패턴은시기 적절하고 예측 가능한 정리, 임시 메모리 누수 방지 및 리소스 처리를 위해 설계되었습니다.
Techopedia는 Dispose를 설명합니다
.NET 프레임 워크는 GC (가비지 수집)를 용이하게하고 개체 메모리 및 리소스를 관리하며 비 결정적 방법 인 Finalize를 호출하여 잘못된 개체 메모리 참조를 회수합니다. Dispose 메서드는 Finalize의 암시 적 메모리 정리에 비해 개체 메모리 인스턴스의 수명을 제어하고 명시 적 메모리 정리 제어를 제공합니다. 다른 메모리 개체 인스턴스가있는 경우에도 Dispose가 호출 될 수 있지만 Finalize는 마지막 메모리 개체가 소멸 된 후에 만 호출 될 수 있습니다.
폐기 방법 규칙은 다음과 같습니다.
- 사용 후 즉시 릴리스해야하는 관리되지 않는 리소스에 사용됩니다.
- Dispose가 호출되지 않으면 Finalize 메서드를 구현해야합니다.
- Dispose 메서드를 호출 한 후 Finalize 메서드를 피하고 불필요한 GC를 피하려면 GC.SuppressFinalize 메서드를 호출해야합니다.
- Dispose 메서드를 두 번 이상 호출하면 예외를주의해서 처리해야합니다. 리소스가 폐기되면 모든 인스턴스 메소드가 ObjectDisposedException을 발생시킬 수 있습니다.
- 이전에 호출 된 Dispose 메서드가있는 개체는 재사용 할 수 없습니다.
- Dispose는 네이티브 리소스 개체 및 .NET Framework에 노출 된 COM (구성 요소 개체 모델) 개체의 관리에만 권장됩니다.
- 예측할 수없는 결과로 인해 여러 스레드에서 Dispose를 동시에 호출 할 수 없습니다.
- 값 유형은 일회용 유형으로 또는 관리되지 않는 자원 구성원으로 작성해서는 안됩니다.
- 관리되지 않는 리소스를 사용할 때는 개체 코드를 완료 한 후 개체의 Dispose 메서드를 자동으로 호출하는 소스 코드의 Using 문을 적용하는 것이 가장 좋습니다.
