1

这是情景:Workflow Foundation StateFinalizationActivity是否阻塞线程?

我使用ManualWorkflowScheduler状态机工作流。假设有2个状态:状态1状态2。 State1包含EventDrivenActivity1,它具有将工作流从State1移动到State2的SetStateActivity1。 State1也有一个StateFinalizationActivity1。

所以我的问题是:

当一个事件引发和SetStateActivity1执行和改变工作流程的状态,状态2,被StateFinalizationActivity1同一线程上执行(作为呼叫的一部分)作为所提出的方法引起状态改变的事件(意思是 - 调用方法是否必须等待,直到EventDrivenActivity1和StateFinalizationActivity1的两个序列都执行,否则将在执行EventDrivenActivity1并返回后执行StateFinalizationActivity1之后返回)?

+0

你有什么看到你不期望或者这是我之前尝试这个问题? – Lazarus 2009-11-19 16:33:44

+0

我猜这是我之前试过的问题:) – edgi 2009-11-19 16:36:12

回答

1

“Finalization”这个词的使用我猜可能会导致一些人想到CLR终结会在不同的线程上运行。然而这是非常不同的概念。

当SetStateActivity被击中以下顺序发生: -

  • 其他在当前状态下当前执行的活动将运行在他们的取消处理的任何活动。
  • 在StateFinalization活动将执行
  • 状态被转换到新的状态
  • 任何活动,在新的状态初始化活动将运行
  • 在美国身上的事件活动输入。

以上所有操作均按当前线程顺序运行。

1

使用ManualWorkflowScheduler时,所有可以执行的内容都将在当前线程上执行。所以工作流程将继续并一直运行,直到它处于下一个状态并处于空闲状态。