2012-08-10 2 views
3

호출 스레드에서 WorkflowApplication을 동 기적으로 사용하여 워크 플로를 실행하고 싶습니다.WorkflowApplication을 동 기적으로 실행하는 방법

링크 http://msmvps.com/blogs/theproblemsolver/archive/2011/01/07/doing-synchronous-workflow-execution-using-the-workflowapplication.aspx은 하나의 예를 제공하지만 유휴 및 중단 이벤트는 여전히 개별 스레드에서 실행 중입니다.

프레임 워크에 이미 전체 동기화 실행을 제공하는 항목이 있습니까? 아니면이를 작성해야합니까?

답변

4

워크 플로 런타임은 선택한 호스트에 관계없이 항상 비동기입니다. 워크 플로가 완료 될 때까지 다른 SynchronizationContext를 사용하거나 스레드를 차단하는 것 외에는 할 수있는 일이 없습니다. Ron Jacobs는 ManualResetEvent를 Workflow Episodes과 함께 사용하는 유사한 접근법을 사용합니다.

+0

환장. 수동 재설정 이벤트. 내 재설정 이벤트는 모두 자동입니다. – Will

+0

감사합니다. 이것은 도움이되었습니다. 나는 스레드를 호출 할 때 모든 이벤트를 실행할 수있는 고급 SynchronizationContext를 개발했다. – Enes

0

2 년 후 ... 가장 좋은 방법은 다음과 같습니다

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

그렇게 간단하지 않습니다. Idle 및 Abort 이벤트는 호출중인 워크 플로우 어플리케이션의 새 스레드에서 호출됩니다. 따라서 이러한 이벤트가없는 워크 플로가있는 경우에만 작동합니다. – Enes

관련 문제