Windows phone 7 Windows Phone 7.1(Mango)::页面析构函数未启动

Windows phone 7 Windows Phone 7.1(Mango)::页面析构函数未启动,windows-phone-7,Windows Phone 7,WindowsPhone7.5(Mango)::当使用硬件键从一页导航回上一页时,假设从第2页到第1页,第2页的析构函数没有启动。退出应用程序时,所有遍历页面的析构函数都会触发。任何人,请帮我解决这个问题?你可以在你的网站上捕获OnBackKey事件,检查它是否被导航回来。然后,如果您的问题是垃圾收集器没有收集该页,那么您应该具有与所需析构函数相同的功能,这更有可能是因为您没有取消订阅“导航自”事件上的每个事件。如果析构函数确实从未(*)触发,那是因为有些东西引用了它。正如伊戈尔所说,这可能是一

WindowsPhone7.5(Mango)::当使用硬件键从一页导航回上一页时,假设从第2页到第1页,第2页的析构函数没有启动。退出应用程序时,所有遍历页面的析构函数都会触发。任何人,请帮我解决这个问题?

你可以在你的网站上捕获OnBackKey事件,检查它是否被导航回来。然后,如果您的问题是垃圾收集器没有收集该页,那么您应该具有与所需析构函数相同的功能,这更有可能是因为您没有取消订阅“导航自”事件上的每个事件。

如果析构函数确实从未(*)触发,那是因为有些东西引用了它。正如伊戈尔所说,这可能是一个事件

或者您覆盖OnBackKeyPress,而不是返回,而是向前导航到第1页。在这种情况下,backback将保留对Page2的引用


(*)请注意,在垃圾收集器运行之前不会调用析构函数。即使您的代码是完美的,您也可能需要一些Page1->Page2导航来实现它。

检查您没有任何带有静态字段的类实例。 你最好的朋友是调试器。 将此代码置于backKeyPress事件之上

if (Debugger.IsAttached)
{
    Debugger.Break();
}
然后将watch添加到任何可以阻止调用析构函数的变量中。

在C#中,析构函数覆盖
对象。Finalize
方法。只有在需要释放非托管资源时,才应重写此方法。此外,只有在垃圾收集期间回收对象时,才会调用终结器。应用程序逻辑不应基于终结器/析构函数。