c# - Windows Phone 8 异步等待用法

标签 c# windows-phone-8 async-await

我刚开始学习 WP 编程,所以这可能是个愚蠢的问题...

我开发的应用程序可以通过几种不同的方法从一个 Web 服务中获取数据。所以我决定将所有这些 Web 服务获取代码放到一个类中:

class WebApiWorker
{
    public async Task<List<GeocodeResponse>> GetGeocodeAsync(String address)
    {
        String url = "http://api.com&search=" + HttpUtility.UrlEncode(address) + "&format=json";

        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
        httpWebRequest.Method = "GET";

        HttpWebResponse response = (HttpWebResponse) await httpWebRequest.GetResponseAsync();

        Stream responseStream = response.GetResponseStream();
        string data;

        using (var reader = new System.IO.StreamReader(responseStream))
        {
            data = reader.ReadToEnd();
        }
        responseStream.Close();

        var geocodeResponse = JsonConvert.DeserializeObject<List<GeocodeResponse>>(data);
        return geocodeResponse;

    }
}

但是我应该如何从我的“主应用程序”代码中调用它,我正在尝试这样的事情:

WebApiWorker webApi = new WebApiWorker();
var geoResponse = await webApi.GetGeocodeAsync("address");

所以这有什么问题,我收到编译器错误: 'await' 运算符只能在异步方法中使用。考虑使用“异步”修饰符标记此方法并将其返回类型更改为“任务”。

欢迎所有建议。

最佳答案

确保“主应用”代码中的方法也有“async”修饰符:

public async Task GetAddress()
{
    WebApiWorker webApi = new WebApiWorker();
    var geoResponse = await webApi.GetGeocodeAsync("address");
}

关于c# - Windows Phone 8 异步等待用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090823/

相关文章:

c# - 将面板保存为图像

c# - tabpage中的foreach控件

pdf - 如何在 Windows Phone 8 中打开 pdf 文件?

android - Xamarin Studio 可以导出 native 库吗

javascript - 在函数中解决 await

c# - 查询对象时 linq to sql + stackoverflow 异常

c# - 在 C# 中禁用编辑 Web 浏览器

c# - 在 LongListSelector 中使用控件

typescript - 我可以在 ag-Grid 中使用异步值 setter 吗(TypeScript 错误)?

c# - 为什么不使用 async/await 关键字时异步单元测试会失败?