如何同步执行WorkflowApplication

时间:2012-08-10 09:37:06

标签: workflow-foundation-4

我想在调用线程上同步使用WorkflowApplication执行工作流程。

链接http://msmvps.com/blogs/theproblemsolver/archive/2011/01/07/doing-synchronous-workflow-execution-using-the-workflowapplication.aspx提供了一个示例,但Idle和Abort事件仍在不同的线程上执行。

框架中是否存在已提供完全同步执行的内容,或者我必须编写它?

2 个答案:

答案 0 :(得分:5)

无论您选择哪个主机,工作流运行时始终是异步的。除了使用不同的SynchronizationContext或阻止线程直到工作流完成之外,您无能为力。 Ron Jacobs使用ManualResetEvent与Workflow Episodes进行类似的方法。

答案 1 :(得分:0)

两年后......最好的方法是:

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