我正在尝试在Windows 8 Metro应用程序中获取网站的内容。我仍然对 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 线程调用网络请求?
不要在任务上调用Wait
。 await
吧。这是一个常见的初学者错误。
将HelloButton_Click更改为:
private async void HelloButton_Click(object sender, RoutedEventArgs e)
{
await GetPage();
}