C#WP8:如何连续调用异步任务方法并每次都获得新的响应?

时间:2014-03-02 02:00:24

标签: c# windows-phone-8 windows-store-apps

此方法:

 public async Task<string> GetjsonStream(string url)
    {
        HttpClient client = new HttpClient();
        HttpResponseMessage response = await client.GetAsync(url);
        string content = await response.Content.ReadAsStringAsync();
        return content;
    }

通过此方法调用:

private async void button_Click(object sender, RoutedEventArgs e)
    {
        String URL = URL_core + API_call;
        try
        {
            string response = await GetjsonStream(URL);
            JSONReturn answere = JsonConvert.DeserializeObject<JSONReturn>(response);
            output_box.Text = answere.value;

        }
        catch (Exception ex)
        {
            output_box.Text = URL;
        }
    }

每次在页面上按下按钮时,我都会尝试进行API调用。我希望能够继续按下按钮而无需重新加载页面并获得新结果。但是,现在每次按下按钮时,我都会从“GetjsonStream”方法得到相同的响应。

我很确定我错误地处理了异步方法。似乎我需要强制等待它或启动任务的新实例。我仍然是C#的新手,我正在学习,所以我希望有一些我想念的东西。

编辑:一些澄清:

URL调用随机生成器。所以每次都应该是不同的结果。 当单步执行“GetjsonStream”方法时,“内容”每次都是相同的。

另外,我发现如果我等了一两分钟,再次按下按钮,我会得到一个新的结果。我想知道是否有一些超时设置。

1 个答案:

答案 0 :(得分:1)

  

我很确定我错误地处理了异步方法。

不,但您处理的是HTTP错误。 :)

可以缓存HTTP获取。由于API应始终返回不同的结果,因此应修改服务器以发送禁用缓存的标头。