Gewährleistet ConfigureAwait(false)
, dass Continuation auf einem anderen Thread ausgeführt wird oder nur signalisiert, dass es nicht zwingend erforderlich ist, auf demselben Thread zu laufen?Wie kann sichergestellt werden, dass die asynchrone Methodenfortsetzung in einem anderen Thread ausgeführt wird?
Gibt es eine Möglichkeit, diese Garantie zu gewährleisten?
Ich muss Kontextfluss über Threads testen.
Die Aufgabe kann auch synchron auf dem gleichen Thread abgeschlossen werden, in diesem Fall "ConfigureAwait (false)" tut einfach nichts. IMO, der einfachste Weg, um die Garantie, die Sie suchen, ist die Verwendung eines benutzerdefinierten Warter (anstelle von 'ConfiguredTaskAwaitable'). – Noseratio
@Noseratio Danke für diesen Kommentar. Ich habe diese Möglichkeit völlig vergessen. –
Kein Problem; Insgesamt würde ich nicht zählen Count 'ConfigureAwait (false)' zu etwas mehr als eine Optimierung, um redundante Kontextwechsel zu vermeiden. Beachten Sie, was [MSDN-Dokumente sagen] (http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.configureawait%28v=vs.110%29.aspx): * true zu versuchen Marshal die Fortsetzung zurück zum ursprünglichen Kontext erfasst; Andernfalls ist false. * Alle anderen Verhaltensweisen, die über diese Anweisung hinausgehen, sind nicht dokumentiert und können versionsspezifisch sein. – Noseratio