如何获得字符串和返回字符串异步

本文关键字:字符串 异步 返回 何获得 | 更新日期: 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();
}