¿Cómo y cuándo usar async y await en C#? Explique con ejemplos
¡Hola a todos! Soy un desarrollador C# principiante y no logro entender async/await. Leí la documentación, pero aún tengo preguntas.
Tengo una aplicación WinForms que carga datos desde un servidor web. Cuando llamo al método de carga, la interfaz se congela durante unos segundos. Aquí está mi código actual:
```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);
}
}
```
He oído que async/await resuelve el problema de congelación de la UI. Pero no entiendo:
1. ¿Cómo declarar correctamente un método async? ¿Siempre es necesario devolver Task?
2. ¿Cuándo usar await y cuándo no? Si quito await, el método sigue funcionando, pero no veo la diferencia.
3. ¿Se puede usar async void? Lo he visto en ejemplos, pero dicen que es una mala práctica.
4. ¿Por qué el compil