Avatar ·

如何在C#中使用async和await?通过示例解释

大家好!我是一名C#初学者,一直搞不懂async/await。我读过文档,但仍然有疑问。 我有一个WinForms应用程序,它从web服务器加载数据。当我调用加载方法时,界面会卡住几秒钟。以下是我当前的代码: ```csharp private void Button_Click(object sender, EventArgs e) { var data = DownloadData("https://api.example.com/data"); textBox1.Text = data; } private string DownloadData(string url) { using (var client = new WebClient()) { return client.DownloadString(url); } } ``` 我听说async/await可以解决UI卡顿的问题。但我不明白: 1. 如何正确声明异步方法?是否总是需要返回Task? 2. 什么时候使用await,什么时候不使用?如果我移除await,方法仍然工作,但我看不到区别。 3. 可以使用async void吗?我在示例中看到过,但据说这是不好的实践。 4. 为什么编译