Asynchrones Vorfallverarbeitungsprozedur: Behandeln Sie die asynchrone Raummethode
Auf dem Gebiet der asynchronen Programmierung wird die Praxis der Verwendung des "vergessenen Vergessens" häufig nicht gefördert, da dieser Methode die Rückverfolgbarkeit von Aufgaben fehlt, und es ist schwierig, mit solchen Methoden umzugehen. Die Frage nach dem Verarbeitungsverfahren asynchroner Ereignisse erscheint jedoch: Sollten wir die gleichen Grundsätze der Vermeidung anwenden?
Gründe für das Verarbeitungsverfahren asynchroner Ereignisse
Es besteht kein Zweifel, dass die empfohlene Methode darin besteht, den asynchronen Raum zu vermeiden. Asynchrone Raumverarbeitungsverfahren sind jedoch eine Ausnahme. Dies liegt daran, dass Ereignisverarbeitungsverfahren einen natürlichen asynchronen Kontext aufweisen, der normalerweise für eine spezifische verfügbare Ausführung verwendet wird, sodass der Mangel an Rückgabewert kein Problem ist.
Beispiel: Re --Pensche das Fenster Ladenszene
unter Berücksichtigung der folgenden Asynchroner -Space -Vorfälle -Verarbeitungsverfahren:
Um die potenziellen Defekte zu verringern, können wir die folgende Rekonstruktion durchführen:
<code>private async void Form_Load(object sender, System.EventArgs e) { await Task.Delay(2000); // 执行异步操作 // ... } </code>
Das versteckte Risiko, das Aufmerksamkeit bildet
<code>Task onFormLoadTask = null; // 跟踪任务,可以实现取消 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); // 执行异步操作 // ... } </code>
Zusätzlich zu dem potenziellen Re -in -Incoming -Problem gibt es in den Verarbeitungsverfahren für asynchrone Ereignisse immer noch einige subtile Risiken:
Thread -Sicherheit:
Das Verarbeitungsverfahren asynchroner Ereignisse wird im Wesentlichen auf dem UI -Thread aufgerufen. Wenn für den relevanten asynchronen Betrieb einen langfristigen Betriebsfaden erfordert, kann die Benutzeroberfläche ohne Antwort reagieren.Odoma:
Das obige ist der detaillierte Inhalt vonSollten Async void Event -Handler vermieden werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!