Ich bin über ein Problem gestolpert ( bei GitHub https://github.com/HTBox/allReady/issues/1313 ), bei dem es darum ging, ConfigureAwait(false)
den Code in ASP.NET Core zu entfernen und dies zu behaupten
Der Aufruf von
ConfigureAwait(false)
ist redundant und führt zu nichts
Das Beste, was ich hier finden konnte, ist eine „Randnotiz“ in einer Antwort (von Stephen Cleary, https://stackoverflow.com/a/40220190/2805831 ), die dies sagt
ASP.NET Core hat keinen "Kontext" mehr
Also, ist ConfigureAwait(false)
wirklich unnötig in ASP.NET - Core (auch wenn vollständige .NET Framework)? Hat es in einigen Fällen einen echten Leistungsgewinn oder einen Unterschied im Ergebnis / in der Semantik?
BEARBEITEN: Ist es in diesem Aspekt anders, wenn ich es als Konsolenanwendung oder in IIS hoste?
quelle
ConfigureAwait(false)
, da die Bibliothek von verschiedenen Anwendungen (ASP.NET Core, WPF, UWP, Konsole usw.) verwendet werden kannConfigureAwait(false)
, dass dies in ASP.NET classic zwar relevant , aber keinesfalls erforderlich ist . Es ist ein Kompromiss: Es mildert einige Sync-over-Async-Deadlocks (die sowieso Designfehler sind - sie existieren nur, wenn jemand etwas Dummes tut) und hat gelegentlich eine Leistungssteigerung von ~ Mikrosekunden, indem der Kontext nicht neu geladen wird. Auf Kosten, nicht vom Kontext abhängig zu sein undConfigureAwait
alles durch Ihren Code zu haben. stackoverflow.com/questions/28221508/…Antworten:
ConfigureAwait
hat nur Auswirkungen auf Code, der in einem Kontext ausgeführt wird,SynchronizationContext
den ASP.NET Core nicht hat (ASP.NET "Legacy").Allzweckcode sollte ihn weiterhin verwenden, da er möglicherweise mit a ausgeführt wird
SynchronizationContext
.ASP.NET Core SynchronizationContext
quelle
Was ist damit?
In diesem Moment (Februar 2020) empfehlen Entwickler auf MS Blog die Verwendung von ConfigureAwait (false), um die Leistung zu verbessern und Deadlocks zu vermeiden. https://devblogs.microsoft.com/dotnet/configureawait-faq/
quelle