Typischerweise gelten asynchrone Void-Methoden (Fire-and-Forget) aufgrund mangelnder Fehlerbehandlung und fehlender Mechanismen zur Aufgabenverfolgung als schlechte Praxis. Für asynchrone Ereignishandler gelten jedoch etwas andere Richtlinien.
Entgegen der allgemeinen Empfehlung wird die Verwendung von async void in Event-Handlern als akzeptabel angesehen. Diese Ausnahme ergibt sich aus der Art der Ereignisbehandlung:
Obwohl die Verwendung von async void in Event-Handlern akzeptabel ist, müssen Sie sich der folgenden potenziellen Probleme bewusst sein:
Für Unit-Tests sollten Sie erwägen, die asynchrone Logik aus dem Event-Handler in eine separate Methode zu extrahieren, etwa so:
<code>public async Task OnFormLoadAsync(object sender, EventArgs e) { await Task.Delay(2000); ... } private async void Form_Load(object sender, EventArgs e) { await OnFormLoadAsync(sender, e); }</code>
Dieser Ansatz ermöglicht ein einfacheres Testen und Abbrechen asynchroner Aufgaben in Event-Handlern, ohne auf den Komfort der Verwendung von async void zu verzichten.
Das obige ist der detaillierte Inhalt vonAsync void Event Handler: Wann ist es akzeptabel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!