2014-04-13 82 views
1

我试图让几个地址的地理COORDS在那样的名单得到地理位置一)。地址是正确的,我确信这一点,我没有迭代就一个接一个地尝试它们,所以这个错误就在这个代码中。任何想法?广东话从地址

谢谢!

+0

它是'Async',那么返回'QueryCompleted'时什么是'restaurant'的值? (循环可能已经结束)。 – WiredPrairie

+0

是的,它已经结束,但它仍然可以到达它们。 –

回答

2

这就是为什么:

foreach (Restaurant restaurant in allRestaurant) 
{ 
    GeoCoordinate help; 
    GeocodeQuery query = new GeocodeQuery() 
    { 
     GeoCoordinate = new GeoCoordinate(), 
     SearchTerm = restaurant.address 
    }; 
    TaskCompletionSource<Restaurant> task = new TaskCompletionSource<Restaurant>(); 
    query.QueryCompleted += (s, ev) => 
    { 
     foreach (var item in ev.Result) 
     { 
      help = item.GeoCoordinate; 
      task.TrySetResult(restaurant); 
     } 
     task.TrySetResult(null); 
    }; 
    query.QueryAsync(); 
    var rest = (await task.Task); 
    if (rest != null) 
     restaurants.Add(rest); 
} 

看来你不能运行多个查询,所以你必须检查另一个地址之前等待。

+0

是的,但我怎么让它等待? –

+2

这样:'var rest =(await task.Task);'等待任何任务 – csharpwinphonexaml

+0

谢谢,完美的解决方案! –