0

我正在构建一个 Windows phone 8 应用程序。我已经有一个 XML,当应用程序启动时,它应该将数据从 XML 加载到Longlistselectors.

我有一个后台工作人员从 URL 加载 XML,保存到另一个 XML 文件,然后重新加载该 XML 并更新Longlistselector.

这是代码:

 private async void BwDoWork(object sender, DoWorkEventArgs e)
    {
        var xdoc = XDocument.Load("APPSDATA.xml");
        var listnode = from c in xdoc.Descendants("Ungdung") select c;
        var xElements = listnode as IList<XElement> ?? listnode.ToList();
        foreach (var xElement in xElements)
        {
            var element = xElement.Element("Id");
            if (element != null)
            {
                var appId = element.Value;
                var appVersion = await GetAppsVersion(appId);
                xElement.SetElementValue("Version", appVersion.ToString());
            }
        }
        var file = new FileStream("APPSDATA.xml", FileMode.Open);

        xdoc.Save(file);
    }

这里奇怪的是:我不知道那个foreach循环什么时候完成它的工作,所以我在RunWorkerCompleted方法中将线程睡眠设置为 10 秒。在此之后,如果我退出应用程序并重新启动它,XML将加载新信息。

但是,如果我在该线程睡眠后尝试做任何事情WorkerCompleted,则不会保存 XML。

我对此一无所知。有人对此有解决方案吗?
对不起,我的英语不好。

private void BwRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        Thread.Sleep(10000);
        SystemTray.SetIsVisible(this, false);  

    }
4

0 回答 0