在WinRT中从UI调用HttpClient - 没有任何反应

时间:2012-11-14 10:50:48

标签: c# windows-8 dotnet-httpclient winrt-async

我正在尝试在Windows 8 Metro App中获取网站的内容。我对asyn和等待方法仍然有点困惑 但这就是我所拥有的:

private void HelloButton_Click(object sender, RoutedEventArgs e)
{  
    GetPage().Wait();
}

private async Task GetPage()
{
      HttpClient client = new HttpClient();

      HttpResponseMessage response = await client.GetAsync("http://www.supertext.ch");
      response.EnsureSuccessStatusCode();
      string responseBody = await response.Content.ReadAsStringAsync();
}

不幸的是,没有任何反应。如果尝试调试它,它只会停在GetAsync() 我是否还需要将HelloButton_Click函数设置为异步?
即使我等待函数GetPage()的完成?
我可以直接从GUI线程调用网络请求吗?

2 个答案:

答案 0 :(得分:2)

不要在任务上调用Waitawait它。这是一个常见的初学者错误。

答案 1 :(得分:2)

将HelloButton_Click更改为:

private async void HelloButton_Click(object sender, RoutedEventArgs e)
{  
    await GetPage();
}