我正在构建一个 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);
}