如何获得字符串和返回字符串异步
本文关键字:字符串 异步 返回 何获得 | 更新日期: 2023-09-27 17:50:37
代码如下:
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;
}
我需要在getCity
方法中获得字符串Address
。
但是我不想处理查询完成后获取地址。我想在getCity
方法中得到字符串Address
和返回地址。我想用async,但是我不知道怎么用。
请帮帮我。谢谢。
由于您正在异步获取数据,因此您需要使您的方法也是异步的。只需返回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();
}