Heim > Backend-Entwicklung > C++ > Sollten Sie asynchrone Void-Ereignishandler vermeiden?

Sollten Sie asynchrone Void-Ereignishandler vermeiden?

Patricia Arquette
Freigeben: 2025-01-26 02:46:09
Original
815 Leute haben es durchsucht

Should You Avoid Async Void Event Handlers?

Ereignisverarbeitungsverfahren: Sollte es vermieden werden? async void im Allgemeinen sind die besten Vorschläge für die Vermeidung der -Methode, insbesondere beim Beginn der Aufgabe, da ihnen der Mechanismus des Verfolgens und der Aufhängen von Aufgaben fehlt, und die abnormale Verarbeitung ist komplizierter. Aber wird dieses Prinzip für das Programm zur Verarbeitung von

angewendet?

async void Schauen wir uns ein Beispiel an: async void

Anstatt diese Methode zu verwenden, ist es besser, den Code neu zu gestalten, um die Aufgabenverfolgung und Stornierungsfunktion zu erreichen:

<code class="language-csharp">private async void Form_Load(object sender, System.EventArgs e)
{
    await Task.Delay(2000); // 执行异步操作
    // ...
}</code>
Nach dem Login kopieren

Was sind zusätzlich zu dem potenziellen Re -incoming -Problem die versteckten Fallen im Verarbeitungsverfahren

?
<code class="language-csharp">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>
Nach dem Login kopieren

Der Schlüssel ist, dass die Verwendung von async void im Kontext überzeugt ist, der nicht elegant sein kann, um Abnormalitäten zu bewältigen. Bei der Ereignisverarbeitungsverfahren werden jedoch Abnormalitäten verarbeitet, indem die globale abnormale Verarbeitung weitergeleitet wird, um sicherzustellen, dass sie ohne explizite Fehlerbehandlung im Ereignisverarbeitungsprogramm selbst angemessen erfasst und verarbeitet werden. Dies ist der Schlüsselunterschied zwischen in dieser spezifischen Situation.

Um das Gerät zu testen, besteht der übliche Ansatz darin, die gesamte Logik aller async void -Methoden zur Isolierung zu extrahieren: async void

Kurz gesagt, obwohl die

-Methode normalerweise nicht empfohlen wird, ist sie akzeptabel, sie im Programm für die Ereignisverarbeitung zu verwenden, da das Framework für das Ereignisverarbeitungsprogramm einen inhärenten abnormalen Verarbeitungsmechanismus aufweist. Daher können Sie im Ereignisverarbeitungsprogramm async void verwenden, ohne gegen die Best Practice zu verstoßen.

Das obige ist der detaillierte Inhalt vonSollten Sie asynchrone Void-Ereignishandler vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage