¿Cómo y cuándo usar correctamente async y await en C#? Analizamos con ejemplos
¡Hola a todos! Soy un desarrollador C# principiante y no logro entender async/await. He leído muchos artículos, pero en la práctica sigo confundiéndome.
Aquí hay un ejemplo simple. Tengo un método que carga datos desde un servidor web y los procesa. He oído que para operaciones largas (por ejemplo, descargar un archivo o una consulta a la base de datos) se debe usar async para no bloquear la UI. Pero escribí este código y sigue congelándose:
```csharp
public async Task LoadDataAsync()
{
using (HttpClient client = new HttpClient())
{
// Pensé que await haría magia
var response = await client.GetStringAsync("https://example.com/data");
// ¡Pero la UI sigue congelándose durante la carga!
return ProcessData(response);
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
var result = LoadDataAsync().Result; // Aquí todo se congela
textBox.Text = result;
}
```
Noté varios problemas:
1. Si llamo a un método `async` de forma síncrona usando `.Result`,