2010-07-01 4 views
0

Windows Workflow를 처음 사용하고 Long Running 프로세스를 작성하려고합니다.
이 프로세스를 실행할 수있는 기간을 제한하려고합니다.
WorkflowInvoker.Invoke를 호출하여 작업 흐름을 트리거하여 테스트를 위해 작은 시간 경과를 전달합니다.Workflow 4 CodeActivity throwing not TimeoutException

이 특정 활동을 시도해도 완벽하게 작동하는 것 같습니다.
하지만 CodeActivity를 사용하면 시간 제한이 완전히 무시되는 것 같습니다.

왜 이런가요? 그리고 CodeActivity가 너무 오래 걸리면 시간 초과가 발생합니다.

지연 활동 작업 예 :

Activity wf = new Sequence() 
{ 
    Activities = 
    { 
     new Delay() 
     { 
      Duration = TimeSpan.FromSeconds(10) 
     }, 
    } 
}; 

try 
{ 
    WorkflowInvoker.Invoke(wf, TimeSpan.FromSeconds(5)); 
} 
catch (TimeoutException ex) 
{ 
    Console.WriteLine(ex.Message); 
} 

예는 CodeActivity를 사용하려고 (이 예에서 TimeOutException이 발생됩니다) :
합니다 (TimeOutException가 발생되지 않습니다 예에서)

답변

0

워크 플로 런타임은 해당 작업을 담당 할 때만 조치를 취할 수 있으며 실행하는 데 10 초 정도 걸리면 런타임 그것에 대해 아무 것도하지 마십시오. 남아있는 시간이 없기 때문에 새로운 활동을 스케줄하지 않고 대신 TimeoutException을 던집니다.

일반적으로 장기간 작업하는 경우 비동기 작업 인 AsyncCodeActivity 또는 NativeActivity를 책갈피와 함께 사용하므로 런타임이 제어되고 워크 플로를 중단 할 수 있습니다.

관련 문제