Dispose를 호출해야 하는 경우
'의심 스럽다면 처분 하는 원칙'에 따름.
Windows Forms의 컨트롤들, 파일 및 네트워크 스트림, 네트워크 소켓, GDI+의 펜/브러시/비트맵 등이 이에 해당.
Dispose를 호출하지 말아야 하는 경우
현재 코드가 객체를 소유한 것이 아니고, 정적 필드나 속성을 통해 공유 객체를 얻은 경우
System.Drawing namespace의 형식에서 정적 필드 및 속성을 통해 얻은 GDI+ 객체 - 응용 프로그램 종료 시점까지 사용
Dispose 메서드가 현재 상황에 맞지 않는 경우
System.IO namespace와 System.Data namespace의 형식들
MemoryStream - 차후 스트림을 다시 쓰는 경우
StreamReader, StreamWriter - 스트림을 계속 열어둬야 하는 경우
IDbConnection - 나중에 Open으로 다시 열려 할 때
DataContext - 게으르게 평가되는 질의가 context에 연결되었을 가능성이 있을 때
객체의 설계 차원에서 Dispose가 꼭 필요하지 않고, 객체 처분 과정에서 프로그램이 필요 이상으로 복잡해지는 경우
System.ComponentModel namespace의 WebClient, StringReader, StringWriter, BackgroundWorker 클래스
이들 클래스는 그저 베이스 클래스가 처분 가능한 것일 뿐이므로, 한 메서드 범위를 넘어서 계속 사용되는 상황이면 더 이상 사용하지 않는 상황을 계속 확인하는 작업 자체가 프로그램을 복잡하게 함.
'정리가 필요한 카테고리(추후 정리) > C#,Unity' 카테고리의 다른 글
C#.NET] WMPLib.WindowsMediaPlayer를 이용해서 wav가 아닌 오디오 파일 재생하는 방법 (0) | 2019.04.24 |
---|---|
C#] 델리게이트(Delegate)의 호환성 (0) | 2019.02.05 |
WPF, 윈폼] 마우스 커서 위치에 있는 픽셀의 색상값(RGB) 구하는 방법 (1) | 2019.02.02 |
윈폼(Winform)에서 폼보더스타일(FormBorderStyle)이 None일 때, 폼 드래그 구현 (0) | 2018.12.23 |
Unity 주요 함수 정리 (0) | 2018.07.14 |