Wie und wann verwendet man async und await in C#? Erklären Sie anhand von Beispielen
Hallo zusammen! Ich bin ein C#-Anfänger und komme mit async/await nicht klar. Ich habe die Dokumentation gelesen, aber es bleiben Fragen.
Ich habe eine WinForms-Anwendung, die Daten von einem Webserver lädt. Wenn ich die Download-Methode aufrufe, friert die Oberfläche für einige Sekunden ein. Hier ist mein aktueller Code:
```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);
}
}
```
Ich habe gehört, dass async/await das Problem des UI-Freezes löst. Aber ich verstehe nicht:
1. Wie deklariert man eine asynchrone Methode richtig? Muss man immer Task zurückgeben?
2. Wann verwendet man await und wann nicht? Wenn ich await entferne, funktioniert die Methode trotzdem, aber ich sehe keinen Unterschied.
3. Kann man async void verwenden? Ich habe das in Beispielen gesehen, aber es heißt, das sei eine schlechte Praxis.
4. Warum kompili