2012-08-10 78 views

回答

4

工作流運行時,無論您選擇哪個主機,都始終是異步的。除了使用不同的SynchronizationContext或在工作流程完成之前阻塞線程之外,您無能爲力。 Ron Jacobs有一個類似的方法,在他的Workflow Episodes中使用ManualResetEvent。

+0

Pfft。手動重置事件。我所有的重置事件都是自動的。 – Will 2012-08-10 13:28:31

+0

謝謝。這有幫助。我最終開發了更高級的SynchronizationContext,它可以在調用線程上執行所有事件。 – Enes 2012-08-11 16:14:35

0

兩年後......最好的辦法是:

class SynchronousSynchronizationContext : SynchronizationContext 
{ 
    public override void Post(SendOrPostCallback d, object state) 
    { 
     this.Send(d, state); 
    } 
} 
+0

並不那麼簡單。正在調用工作流應用程序的新線程正在調用空閒和中止事件。因此,只有擁有不會發生這些事件的工作流時,這纔會起作用。 – Enes 2013-01-24 13:31:05