【发布时间】:2016-11-30 21:03:23
【问题描述】:
我为 Windows Phone 8.0 Silverlight App 创建了一个异步方法 GetStreetName
string streetname;
private async Task<string> GetStreetName(int i)
{
MapAddress address;
ReverseGeocodeQuery query = new ReverseGeocodeQuery();
query.GeoCoordinate = Route[i].Item1;
query.QueryCompleted += (s, e) =>
{
if (e.Error != null)
return;
address = e.Result[0].Information.Address;
streetname = address.Street;
};
query.QueryAsync();
return streetname;
}
我在 for 循环中使用 await 运算符来调用它:
for (int i = 0; i < Route.Count; i++)
{
ListBox.Items.Add(await GetStreetName(i));
}
但我总是只得到第一个加载的地理位置的街道名称,我不知道为什么(我认为 await 运算符正在等待异步方法完成)。
附加信息:我刚刚看到在这个简短的 sn-p 中这不是 100% 清楚的,街道名称和路线是全局“变量”,路线是一个元组列表,其中第一项是地理坐标。
我该如何解决这个问题?
【问题讨论】:
标签: silverlight windows-phone-8 async-await maps