我正在开发一个函数来返回从xml文件生成的集合。WebClient - 等到文件已经下载
最初,我使用本地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;
}
我怎样才能加载该文件在此功能中,有事件处理程序的运行,然后继续功能?
我唯一能想到的是添加一个循环来检查一个变量,该变量由事件处理程序代码更新......并且听起来不是一个好的解决方案。
感谢, 乔希
你不想阻止用户界面线程,因此它可能是值得的异步请求读了,即使这意味着你要调整你的设计 – 2012-03-15 20:54:52
我已经开始看异步/等待关键字,谢谢! – Josh 2012-03-15 23:03:04