.ShowDialog () 메서드를 통해 열린 양식이 있다고 가정합니다.
어떤 시점에서 양식의 일부 컨트롤에 일부 이벤트 처리기를 연결합니다.
을 포함한다.
// Attach radio button event handlers.
this.rbLevel1.Click += new EventHandler(this.RadioButton_CheckedChanged);
this.rbLevel2.Click += new EventHandler(this.RadioButton_CheckedChanged);
this.rbLevel3.Click += new EventHandler(this.RadioButton_CheckedChanged);
양식이 닫히면이 핸들러를 제거해야합니다.
현재 FormClosing 이벤트가 발생하면이 작업을 수행하고 있습니다.
을 포함한다.
private void Foo_FormClosing(object sender, FormClosingEventArgs e)
{
// Detach radio button event handlers.
this.rbLevel1.Click -= new EventHandler(this.RadioButton_CheckedChanged);
this.rbLevel2.Click -= new EventHandler(this.RadioButton_CheckedChanged);
this.rbLevel3.Click -= new EventHandler(this.RadioButton_CheckedChanged);
}
그러나 Dispose () 메서드에서 핸들러가 제거 된 몇 가지 예제를 보았습니다.
이 작업을 수행하는 데 '최상의 방법'이 있습니까?
(C #, Winforms, .NET 2.0 사용)
감사.
이 경우 핸들러를 제거 할 필요가 없습니다. 양식이나 단추가 양식 외부의 코드에 의해 참조되지 않으므로 전체 오브젝트 그래프가 가비지 수집됩니다.
아니요, 닫는 양식의 컨트롤에서 이벤트 처리기를 제거 할 필요가 없습니다. 그들은 모두 함께 처리됩니다.
아마도 브라우저에서 메모리 누수가 발생하지 않도록 이벤트 핸들러를 제거해야하는 웹 페이지를 생각할 것입니다.