在Silverlight for Windows Phone 8中删除弹出窗口

时间:2014-12-29 11:14:00

标签: c# silverlight windows-phone-8 popup windows-phone

我已经测试了我的应用程序的内存使用情况,突然看到内存出现峰值,当我加载弹出窗口时,在我尝试关闭它之后它似乎没有下降。

我从第一页cs文件(我离开的那个)添加弹出窗口:

Popup popup;

if (!SecondScreen.SecondScreenLoaded)
{
    Popup PopupTest = new Popup();
    PopupTest.IsOpen = true;
    LayoutRoot.Children.Add(PopupTest);
}

当第二页完成后,我希望删除弹出窗口,从而释放内存 因此我不确定如何在c#中正确删除弹出窗口,有人可以告诉我这个吗?

2 个答案:

答案 0 :(得分:0)

我永远不会在Windows手机上使用本机弹出窗口挖掘应用程序,也许你可以使用coding4fun工具包来实现类似的功能。它包含弹出样本,你可以查看该控件。

http://coding4fun.codeplex.com/

enter image description here enter image description here

答案 1 :(得分:0)

好的,事情是每次SeconeScreenLoaded为true时,您都在创建一个新的Popup对象。

  

Popup PopupTest = new Popup();

为关闭弹出窗口,我猜您正在使用:

PopupTest.IsOpen = false;

这样,您实际上仅更改了IsOpen属性,但没有将其从内存中删除。我们假定GC将对其进行处理,但是GC仅在不使用其引用的情况下才考虑它。因此,在关闭弹出窗口时,请为该对象分配null,以允许GC稍后收集它。

 if(PopupTest!=null && PopupTest.IsOpen = true)
 {
     PopupTest.IsOpen = false;
     PopupTest = null;
 }