Avatar ·

如何在C#中正确使用async和await?通过示例分析

大家好!我是一名初学C#的开发者,一直搞不懂async/await。我读了很多文章,但在实践中仍然感到困惑。 这里有一个简单的例子。我有一个从web server加载数据并处理它们的方法。我听说对于耗时操作(例如下载文件或数据库查询),应该使用async以避免阻塞UI。但我写了这样的代码,它仍然会卡住: ```csharp public async Task LoadDataAsync() { using (HttpClient client = new HttpClient()) { // 我以为await会施展魔法 var response = await client.GetStringAsync("https://example.com/data"); // 但UI在加载期间仍然卡住了! return ProcessData(response); } } private void Button_Click(object sender, RoutedEventArgs e) { var result = LoadDataAsync().Result; // 这里一切都卡住了 textBox.Text = result; } ``` 我注意到几个问题: 1. 如果我同步调用`async`方法,