我的代码如下:
public void getCity()
{
ReverseGeocodeQuery reverseGeocode = new ReverseGeocodeQuery();
reverseGeocode.GeoCoordinate = new GeoCoordinate(10.79845, 106.65063);
reverseGeocode.QueryCompleted += reverseGeocode_QueryCompleted;
reverseGeocode.QueryAsync();
}
private void reverseGeocode_QueryCompleted(object sender, QueryCompletedEventArgs<IList<MapLocation>> e)
{
MapAddress geoAddress = e.Result[0].Information.Address;
}
我需要在Address
方法获取字符串getCity
。
但我不想在查询完成时处理以获取地址。我想在Address
方法获取字符串getCity
并返回地址。我认为使用异步但我不知道如何使用。
请帮帮我。感谢。
答案 0 :(得分:2)
由于您正在获取数据异步,因此您需要使您的方法也异步。只需返回Task<MapAddress>
并创建一个使用TaskCompletionSource<MapAddress>
的任务。
您的下载方式如下:
public Task<MapAddress> GetCity()
{
TaskCompletionSource<MapAddress> tcs = new TaskCompletionSource<MapAddress>();
ReverseGeocodeQuery reverseGeocode = new ReverseGeocodeQuery();
reverseGeocode.GeoCoordinate = new GeoCoordinate(10.79845, 106.65063);
reverseGeocode.QueryCompleted += (sender, e)=> tcs.SetResult(e.Result[0].Information.Address);
reverseGeocode.QueryAsync();
return tcs.Task;
}
你可能需要一个异步方法来调用它。
private async void Something()
{
MapAddress address = await GetCity();
}