Async Void und ASP.Net: Die Ausnahme verstehen
Bei der Verwendung von Async-Void-Methoden in ASP.Net-Anwendungen kann es zu einer Ausnahme kommen mit der Aussage: „Ein asynchrones Modul oder ein asynchroner Handler wurde abgeschlossen, während ein asynchroner Vorgang noch ausstand.“ Diese Ausnahme entsteht, weil async void die Anzahl ausstehender Vorgänge beim Aufruf erhöht und nach Abschluss verringert.
Im Gegensatz dazu geben asynchrone Task-Methoden ein Task-Objekt zurück, sodass das ASP.Net-Framework den asynchronen Vorgang verfolgen und verarbeiten kann ordnungsgemäß abgeschlossen werden.
Warum Task hilft
Durch die Rückgabe von Task aktivieren Sie das Framework um:
Async Void und Fire-and-Forget
Asynchrone Void-Methoden scheinen zwar einen Fire-and-Forget-Ansatz zu implementieren, dies ist jedoch ungenau im Kontext von ASP.Net. Das Framework verfolgt diese Methoden aktiv und löst eine Ausnahme aus, wenn sie vorzeitig abgeschlossen werden.
Um ein echtes Fire-and-Forget-Verhalten zu erreichen, verwenden Sie asynchrone Task-Methoden und ignorieren Sie die zurückgegebene Task. Von einer vorzeitigen Rückgabe von Anfragen in ASP.Net wird jedoch aufgrund möglicher Probleme generell abgeraten.
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWarum führt die Verwendung von „async void' in ASP.NET oft zu „Ein asynchrones Modul oder ein asynchroner Handler wurde abgeschlossen, während ein asynchroner Vorgang noch ausstand'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!