Heim >Backend-Entwicklung >C++ >Wann und warum ist „async void' eine schlechte Praxis in C#?
Den Kontext verstehen:
Asynchrone Methoden in C# können zurückkehren entweder Aufgabe oder ungültig. Während asynchrone Void-Methoden in bestimmten Szenarien praktisch erscheinen können, bringen sie potenzielle Nachteile mit sich, weshalb von ihnen generell abgeraten wird. Lassen Sie uns untersuchen, warum asynchrones Leeren als schlechte Praxis gilt und wie man diese Situationen effektiver angeht.
Gründe, asynchrones Leeren zu vermeiden:
Alternative Ansätze:
In dem bereitgestellten Beispiel, in dem der Fokus auf der Reaktion auf einen Schaltflächenklick liegt, ohne auf das Ergebnis zu warten, besteht ein geeigneterer Ansatz darin, die PrimeCustomTask-Methode als asynchrone Aufgabe zu definieren und die OnLoad-Methode als zu verwenden Ein Einstiegspunkt zum Starten des asynchronen Vorgangs. Auf diese Weise bleiben alle Vorteile asynchroner Task-Methoden erhalten:
protected override async void OnLoad(EventArgs e) { if (CustomTask == null) await PrimeCustomTask(); } private async Task PrimeCustomTask() { CustomTask = new TaskCompletionSource<int>(); while (CustomTask.Task.IsCompleted == false && IsDisposed == false) { // Wait for button click to set the value await Task.Delay(100); } int result = CustomTask.Task.Result; // Show the value if (result != 0) MessageBox.Show(result.ToString()); }
Durch die Einhaltung dieser Richtlinien können Sie die Fallstricke asynchroner Void-Methoden vermeiden und die Wartbarkeit, Wiederverwendbarkeit und Testbarkeit Ihres Codes verbessern.
Das obige ist der detaillierte Inhalt vonWann und warum ist „async void' eine schlechte Praxis in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!