Ich weiß, dass es im Allgemeinen als schlechte Idee angesehen wird, Fire-and-Forget- async void
Methoden zum Starten von Aufgaben zu verwenden, da die anstehende Aufgabe nicht nachverfolgt werden kann und es schwierig ist, Ausnahmen zu behandeln, die in einer solchen Methode ausgelöst werden könnten.
Sollte ich async void
Event-Handler generell auch meiden ? Beispielsweise,
private async void Form_Load(object sender, System.EventArgs e)
{
await Task.Delay(2000); // do async work
// ...
}
Ich kann es so umschreiben:
Task onFormLoadTask = null; // track the task, can implement cancellation
private void Form_Load(object sender, System.EventArgs e)
{
this.onFormLoadTask = OnFormLoadTaskAsync(sender, e);
}
private async Task OnFormLoadTaskAsync(object sender, System.EventArgs e)
{
await Task.Delay(2000); // do async work
// ...
}
Was sind die Unterwasserfelsen für asynchrone Event-Handler neben einem möglichen Wiedereintritt?