我正在构建Windows Phone 8 App。我已经有了一个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
方法中设置了10s的线程睡眠。在此之后,如果我退出应用程序并重新启动它,将加载带有新信息的XML
。
但是如果我在该线程休眠后尝试在WorkerCompleted
中执行任何操作,则不会保存XML。
我对此一无所知。有人有解决方案吗?
抱歉我的英语不好。
private void BwRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Thread.Sleep(10000);
SystemTray.SetIsVisible(this, false);
}