2

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

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 线程调用网络请求吗?

4

2 回答 2

2

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

于 2012-11-14T11:29:51.150 回答
2

将 HelloButton_Click 更改为:

private async void HelloButton_Click(object sender, RoutedEventArgs e)
{  
    await GetPage();
}
于 2012-11-14T11:54:36.397 回答