Warum Async Void keine gute Idee ist: Aufschlüsselung der Gründe
Während die Rückgabe von void von einer asynchronen Methode in bestimmten Fällen harmlos erscheinen mag In bestimmten Situationen raten Best Practices der Branche dringend davon ab. Hier ist der Grund:
1. Kuriositäten bei der Ausnahmebehandlung
Asynchrone Void-Methoden verfügen über eine einzigartige Fehlerbehandlungssemantik. Ausnahmen, die der asynchronen Void-Methode entgehen, wie etwa „PrimeCustomTask“ im bereitgestellten Beispiel, sind schwer abzufangen und zu verarbeiten. Dies erschwert die Fehlerbehandlung und macht das Debuggen anspruchsvoller.
2. Kompositionsherausforderungen
Asynchrone Void-Methoden sind nicht in der Lage, gut mit anderen asynchronen Vorgängen zu komponieren. Der Code in „PrimeCustomTask“ existiert isoliert und kann nicht einfach in übergeordnete asynchrone Konstrukte integriert werden. Dies schränkt die Wartbarkeit des Codes und die Wiederverwendung des Codes ein.
3. Testschwierigkeiten
Unit-Tests von asynchronen Void-Methoden sind bekanntermaßen schwierig. Da die Methode „void“ zurückgibt, ist es schwierig, zuverlässige Behauptungen zu erstellen und alle möglichen Ausführungspfade zu testen. Dies macht es schwierig, die Richtigkeit des Codes sicherzustellen.
4. Ausnahmeweitergabe
Wie in der Antwort erwähnt, werden Ausnahmen, die von „PrimeCustomTask“ entkommen, nicht auf natürliche Weise an die Aufrufer weitergegeben. Dies kann zu unerwartetem Verhalten führen und es schwierig machen, Fehler effektiv zu behandeln.
Ändern, um Konventionen zu befolgen
Um sich an etablierte Konventionen anzupassen, können Sie den Code im ändern Beispiel für die Verwendung asynchroner Task-Methoden:
protected override async Task OnLoad(EventArgs e) { if (CustomTask == null) await PrimeCustomTask(); } private async Task PrimeCustomTask() ...
Durch die Rückgabe asynchroner Tasks profitieren Sie von:
Durch die Übernahme dieser Best Practices schreiben Sie wartbareren, testbareren und zuverlässigeren Code, wenn Sie Async verwenden Methoden.
Das obige ist der detaillierte Inhalt vonWarum sollten Sie Async-Void-Methoden in C# vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!