Was ist ConfigureAwait?
Was ist ConfigureAwait?

Video: Was ist ConfigureAwait?

Video: Was ist ConfigureAwait?
Video: Vermeide auch DU diesen Async/Await Fehler in VB.NET & C# – ConfigureAwait nutzen 2024, November
Anonim

KonfigurierenAwait (false) beinhaltet eine Aufgabe, die bereits erledigt ist, wenn sie erwartet wird (was eigentlich unglaublich häufig vorkommt), dann die KonfigurierenAwait (false) ist bedeutungslos, da der Thread danach weiterhin Code in der Methode ausführt und immer noch im gleichen Kontext, der zuvor vorhanden war.

Anschließend kann man sich auch fragen, was nützt ConfigureAwait false?

KonfigurierenAwait ( falsch ) konfiguriert die Task so, dass die Fortsetzung nach dem Wait nicht im Aufruferkontext ausgeführt werden muss, wodurch mögliche Deadlocks vermieden werden.

Was ist SynchronizationContext außer oben? Synchronisationskontext ist eine Darstellung der aktuellen Umgebung, in der unser Code ausgeführt wird. Das heißt, wenn wir in einem asynchronen Programm eine Arbeitseinheit an einen anderen Thread delegieren, erfassen wir die aktuelle Umgebung und speichern sie in einer Instanz von Synchronisationskontext und platzieren Sie es auf dem Task-Objekt.

Wenn man dies berücksichtigt, wozu dient ConfigureAwait?

Verwenden von KonfigurierenAwait (false), um Deadlocks zu vermeiden, ist eine gefährliche Praxis. Sie müssten Verwenden Sie ConfigureAwait (false) für jedes Wait in der transitiven Schließung aller Methoden, die vom Blocking-Code aufgerufen werden, einschließlich des gesamten Third-Party- und Second-Party-Codes. Verwenden von KonfigurierenAwait (false), um Deadlocks zu vermeiden, ist bestenfalls nur ein Hack).

Was ist GetAwaiter?

GetAwaiter ()-Methode, die eine Instanz mit einer GetResult()-Methode zurückgibt. Wenn GetResult() bei einer fehlerhaften Task verwendet wird, wird die ursprüngliche Ausnahme weitergegeben (auf diese Weise erhält „Task erwarten“sein Verhalten). GetResult(), da es die Aufgabenausnahmen beibehält, anstatt sie in eine AggregateException einzuschließen.

Empfohlen: