2010-02-09 264 views
2

在我们的WPF应用程序,我们正在把事件在我们窗口的构造是这样的:删除事件处理程序

AddHandler(Keyboard.KeyUpEvent, (KeyEventHandler)HandleKeyDownEvent); 

     this.Closing += new System.ComponentModel.CancelEventHandler(WindowF_Closing); 
     this.Loaded += new RoutedEventHandler(WindowF_Loaded); 

这是个好主意,在最后的活动,删除这些事件使窗口被配置为:

RemoveHandler(Keyboard.KeyUpEvent, (KeyEventHandler)HandleKeyDownEvent); 

     this.Closing -= new System.ComponentModel.CancelEventHandler(WindowF_Closing); 
     this.Loaded -= new RoutedEventHandler(WindowF_Loaded); 

回答

6

如果事件的发布者的寿命比订户长,你只需要明确地移除事件处理程序。

对您而言,ClosingLoaded事件的发布者是窗口本身,因此无需退订事件。键盘,但是会很长一段时间,所以退订KeyUpEvent是一个好主意。