2012-08-10 72 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