Avatar ·

Como e quando usar async e await em C#? Explique com exemplos

Olá a todos! Sou um desenvolvedor C# iniciante e não consigo entender async/await. Li a documentação, mas ainda tenho dúvidas.\n\nTenho um aplicativo WinForms que carrega dados de um servidor web. Quando chamo o método de download, a interface congela por alguns segundos. Aqui está meu código atual:\n\n```csharp\nprivate void Button_Click(object sender, EventArgs e)\n{\n var data = DownloadData("https://api.example.com/data");\n textBox1.Text = data;\n}\n\nprivate string DownloadData(string url)\n{\n using (var client = new WebClient())\n {\n return client.DownloadString(url);\n }\n}\n```\n\nOuvi dizer que async/await resolve o problema de congelamento da UI. Mas não entendo:\n\n1. Como declarar corretamente um método assíncrono? É necessário sempre retornar Task?\n2. Quando usar