我正在尝试在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线程调用网络请求吗?
答案 0 :(得分:2)
不要在任务上调用Wait
。 await
它。这是一个常见的初学者错误。
答案 1 :(得分:2)
将HelloButton_Click更改为:
private async void HelloButton_Click(object sender, RoutedEventArgs e)
{
await GetPage();
}