结束页面背景工作,WP8,C#

时间:2014-12-27 14:21:18

标签: c# wpf xaml windows-phone-8

我不知道它是否有可能,但是在某种程度上如何"结束" Windows Phone 8应用程序中的页面?

我的问题是我在多个页面上使用一个代理(知道我的xml何时下载)。它工作正常,但是当我打开一个页面时,她会自己初始化,我会转到其他页面(通过后退按钮),新页面也会初始化。一切都很好,但前一页仍在听代表,这是一个很大的问题。因此,我需要让上一页(已关闭)进入同样的状态,就像她从未打开过一样。

我会感谢任何建议(也许我现在以错误的方式思考,我不知道,也许页面必须要进行去初始化)。

PS:如果有必要,我会发布代码,但我认为不是。 :)

这里有一些代码: 在课堂上,我正在下载XML,我有这样的代表:

    public delegate void delDownloadCompleted();
    public static event delDownloadCompleted eventDownloadCompleted;

这个类正在下载几个不同的xml文件,取决于run(int number)方法中的构造函数。

下载完成后,xml中的所有信息都保存在我的本地列表中,我调用delegateCompled。 if (eventDownloadCompleted != null) { eventDownloadCompleted(); }

然后我有几个不同的页面。所有页面都用于显示下载的xml中的特定数据。所以在这个特定的页面上,我有一个方法,当" downloadClass"说它是完整的。

XML_DynamicDataChat.delDownloadCompleted delegMetoda = new XML_DynamicDataChat.delDownloadCompleted(inicialiyaceListu);
XML_DynamicDataChat.eventDownloadCompleted += delegMetoda; 

这就是" inicializaceListu"方法:

private void inicialiyaceListu()
        {
            Dispatcher.BeginInvoke(() =>
            {
                model = new datka();
                // object model is just model where i am saving all specific list of informations that i got from xml files.
                chatList9 = model.getChat(1);
                gui_listNovinky.ItemsSource = chatList9;
                gui_loadingGrid.Visibility = Visibility.Collapsed;
            });
        }

所有这些都可以正常工作,但是当我返回(使用后退按钮)并打开其他特定页面以及其他下载的xml中的其他特定信息时,上一页仍在监听代理,inicialiyaceListu()方法仍然是我每次下载完xml都会被解雇。

所以我需要说上一页:"嘿页面,你现在关闭了!你可以关闭****并停止工作吗?!?"

我认为每个页面的特定委托可以解决这个问题,但这不是正确的编程方式。

1 个答案:

答案 0 :(得分:0)

我解决了它很简单。这是非常简单的解决方案。我刚刚创建了bool变量并将其设置为false。在inicializaceListu()我有条件,如果它是真的。如果确实如此,那么做什么都是假的什么都不做。