例如,如果我有一个UserControl或一个在其代码隐藏文件中创建自己的事件的页面,当该页面或控件卸载时,我是否必须确保其事件是取消订阅的?我的意思是没有外部订阅。每个订阅者都是独立的,所以我想一旦控件被卸载就没关系了:
public sealed partial class MyPage : Page
{
public MyPage()
{
this.Unloaded += Page_Unloaded;
this.Tapped += Page_Tapped;
}
private void Page_Tapped(object sender, TappedRoutedEventArgs e)
{
// Do some work here.
}
private void Page_Unloaded(object sender, RoutedEventArgs e)
{
// Is the following appropriate and REQUIRED?
this.Unloaded -= Page_Unloaded;
this.Tapped -= Page_Tapped;
}
}
答案 0 :(得分:3)
不,您不需要取消订阅。您没有创建对MyPage
的任何其他引用。当每个请求完成且MyPage
的每个实例都超出范围时,就不会引用需要删除的实例。
答案 1 :(得分:2)
不,在正常情况下 - 不需要卸货。
但是,如果您创建自己的静态委托,那么您必须记住卸载它们 - 因为当您的实例超出范围时它们不会被删除。