【发布时间】:2012-03-15 20:47:58
【问题描述】:
我正在开发一个函数来返回从 xml 文件生成的集合。
最初,我使用本地 xml 文件进行测试,但现在我准备让应用程序从服务器下载真正的 xml 文件。由于需要为 WebClient 对象提供 OpenReadCompleted 事件处理程序,我正在努力了解如何做到这一点 - 我无法从中返回集合数据,并且在此处理程序执行时,原来的功能已经结束。
我的原代码如下:
public static ObservableCollection<OutletViewModel> GetNear(GeoCoordinate location)
{
ObservableCollection<OutletViewModel> Items = new ObservableCollection<OutletViewModel>();
// Load a local XML doc to simulate server response for location
XDocument xDoc = XDocument.Load("SampleRemoteServer/outlet_list.xml");
foreach (XElement outlet in xDoc.Descendants("outlet"))
{
Items.Add(new OutletViewModel()
{
Name = outlet.Attribute("name").Value,
Cuisine = outlet.Attribute("cuisine").Value
});
}
return Items;
}
如何在这个函数中加载文件,让事件处理程序运行,然后继续函数?
我能想到的唯一方法是添加一个循环来继续检查一个变量,该变量由事件处理程序代码更新......这听起来不是一个好的解决方案。
谢谢, 乔什
【问题讨论】:
-
您不想阻塞 UI 线程,因此可能值得一读异步请求,即使这意味着您必须调整设计
-
我已经开始研究 async/await 关键字了,谢谢!
标签: c# silverlight windows-phone-7