'无法等待任务<string>'(PCL Xamarin Studio)

Rem*_*sen 5 c# async-await portable-class-library xamarin

我正在尝试编写以下方法:

    public async Task<string> GetJson(string url, 
                    Dictionary<string,string> parameters = null){

        // parameters?
        if (parameters != null) {
            if (parameters.Count > 0) {
                url += "?";
                foreach(var key in parameters.Keys){

                    // add parameter to url
                    url += String.Format("{0}={1}", key, parameters[key]);

                    // more parameters?
                    if(!parameters.Keys.Last ().Equals(key)){
                        url += "&";
                    }
                }
            }
        }
        // send request
        var uri = new Uri(url);
        var req = new HttpClient();
        Task<string> getJsonTask = req.GetStringAsync(uri);
        // EXCEPTION : 'Cannot await on Task<string>'
        return await getJsonTask;
    }
Run Code Online (Sandbox Code Playgroud)

我在编译时遇到错误.我不认为问题是语法.我认为是一个依赖问题.我的参考资料是:

在此输入图像描述

我用Nuget添加了它们.关于什么可能是问题的任何想法?

提前致谢.

UPDATE

Selman22建议:

    public async Task<string> GetJson(string url, Dictionary<string,string> parameters = null){
        // ...
        return await req.GetStringAsync(uri); // Same exception
    }
Run Code Online (Sandbox Code Playgroud)

Kenneth建议:

    public Task<string> GetJson(string url, Dictionary<string,string> parameters = null){
        // ...
        return req.GetStringAsync(uri); // no problems here
    }

    // Later when trying to invoke GetJson
    public async Task<List<Station>> GetStations(){
        var url = String.Format(
            "?{0}_id{1}&_render=json", 
            DublinBikeDataProvider.BASE_URL,
            DublinBikeDataProvider.STATIONS
        );
        var json = await this._httpClient.GetJson(url); // same exception
        return this.ParseStations(json);
    }
Run Code Online (Sandbox Code Playgroud)

Ste*_*ary 4

确保您已安装Microsoft.Bcl.AsyncNuGet 库。如果更改 PCL 目标平台,则应卸载所有 NuGet 包并重新安装它们。