기본적으로 응용 프로그램 Win-Form을 만들 때 양식을 처리하기 위해 Visual Studio에서 생성 한 코드입니다.WinForms 및 이벤트 처리기
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
충분하지 않습니까? 또는 가비지 수집기에서 컨트롤을 수집 할 준비가 될 수 있도록 모든 이벤트를 등록 취소해야합니까? 이 종종 close and open
작업에 대상이되는 형태이며, 그 안에 사건의 엄청난 금액을 사용하는 경우
if (disposing && (components != null))
{
myButton.OnClick-= MyFunction; //may be here!!
// ... all events used
components.Dispose();
}
모든 이벤트를 등록 취소 할 책임이 없다는 뜻입니까? –
@ 한스 패 탄트 (Hans Passant) : 내 경험에 비추어 볼 때, 양식에 영향을 미치는 * 이벤트의 양이 너무 많거나 너무 자주 사용되어 '구독 취소'를하지 않으면 메모리 누수가 발생합니다. – Tigran
예, 그것이 그것이 의미하는 것입니다. 이벤트 소스가 이벤트 고객보다 오래 지속되는 경우에만 필요합니다. 양식과 그 자식 컨트롤에 문제가 없어서 동시에 모두 죽습니다. SystemEvents 클래스의 이벤트는 수동으로 구독을 취소해야하는 이벤트의 예입니다. –