Wie ich kürzlich zu meinen Kosten entdeckte, kann ein await
, wenn es keinen Synchronisierungskontext gibt, den Code nach dem Warten auf einen anderen Thread führen.Wie kann ich die Fortsetzung nach einem Warten auf den gleichen Thread ausführen?
Ich habe derzeit Probleme mit seltsamen Verhalten in einem VSTO Office-Add-in, was ich denke, ist möglicherweise ein Ergebnis dieses Verhaltens. Bei der Verarbeitung von Ereignissen, die von der Office-Anwendung ausgelöst werden, ist kein Synchronisierungskontext vorhanden (es sei denn, ich erstelle ein Formular, das einen Synchronisationskontext erstellt).
Meine Frage ist, ob das Erstellen eines Formulars der beste/effizienteste Weg ist, um sicherzustellen, dass ich einen Synchronisationskontext habe oder ob es einen einfacheren Weg dafür gibt.
Wäre es nicht einfacher, in diesem Fall nicht 'erwarten' zu verwenden? Wenn die von Ihnen verwendete API nur asynchron ist, können Sie dies erreichen, indem Sie 'Task'' Result' oder 'Wait()' verwenden. – svick
@svick: Ich denke, was du sagst ist, dass, wenn ich möchte, dass die warten auf den gleichen Thread zurückkommen, dann ist das effektiv "synchrone" Verhalten. Hmmm ... ja, ich denke schon. *Seufzer*. Ich bin ein bisschen verloren mit diesem Zeug, um ehrlich zu sein. –