저는 C# 클래스와 deconstructor에 대해 약간 혼란 스럽습니다.EventHandlers 및 C# 클래스 destructor/Dispose
은 내가 생성자에서 얻고 클래스 인스턴스에 몇 가지 이벤트 핸들러를 소비해야한다 : 나는 푸 클래스가 파괴 될 때 해당 이벤트에 가입을 취소 할 필요가
public Foo(IFooHandler handler)
{
handler.Load += Load;
handler.Close += Close;
}
. IDisposable
을 구현하고 거기에서 구독을 취소합니까, 아니면 deconstructor에서 구독합니까? 나는 그 사건들을 소비 할 필요가있다, 나는 그것을 다른 방법으로 할 수 없다.
하나의 클래스에 대해 인스턴스를 만들고 진행 상태를 확인한 다음 클래스 인스턴스가 범위를 벗어납니다. 다른 양식의 경우 양식이 닫힐 때까지 MainForm
에 그대로 있습니다. 첫 번째 문제는 여전히 이벤트 처리기에 대한 참조가있을 수 있으며 제대로 실행되지 않을 수 있으므로 걱정됩니다.
메모리가 누출되고 싶지 않습니다. 언제 탈퇴해야합니까?
아! 관리되지 않는 코드를 정리하지 않는 한 IDisposable을 구현하지 말아야한다고 생각했습니다. –
IDisposable은 다른 이유로 구현 될 수 있습니다. 관리되지 않는 리소스를 정리하는 데만 국한되지 않습니다 ... –
일반적인 Disposable Pattern을 살펴보면 관리되는 리소스와 관리되지 않는 리소스를 처리 할 수있는 경로가 있습니다. 주로 관리되지 않는 리소스 및/또는 관리되는 리소스 만 있습니다. 그러나 귀하의 경우에는 청소해야하는 관리 자원을 가지고있는 것이 좋습니다. – Oliver