Workflow 再次运行子活动

Workflow 再次运行子活动,workflow,workflow-foundation,workflow-activity,Workflow,Workflow Foundation,Workflow Activity,我正在尝试使用WF3.5编写一个自定义CompositeActivity。有点像抽打 问题是,当我想再次执行子活动时(它之前通过最后一次调用ActivityExecutionContext.CloseActivity()成功),我得到一个InvalidOperationException,其中包含以下消息:“活动状态必须为‘初始化’才能执行” 通过调试问题,子活动的ExecutionStatus似乎已关闭,其ExecutionResult未初始化 但是的MSDN文档说“如果状态为关闭,则活动将初

我正在尝试使用WF3.5编写一个自定义CompositeActivity。有点像抽打

问题是,当我想再次执行子活动时(它之前通过最后一次调用ActivityExecutionContext.CloseActivity()成功),我得到一个InvalidOperationException,其中包含以下消息:“活动状态必须为‘初始化’才能执行”

通过调试问题,子活动的ExecutionStatus似乎已关闭,其ExecutionResult未初始化

但是的MSDN文档说“如果状态为关闭,则活动将初始化并执行”

那么,为什么我会遇到这个异常,我如何才能避免它呢

谢谢,
朱利安我想我找到了答案。每当复合活动想要启动子活动时,它都需要为子活动创建新的ActivityExecutionContext

在新的ActivityExecutionContext中执行子活动:

ActivityExecutionContext context2 = executionContext.ExecutionContextManager.CreateExecutionContext(a);

// listen for the child's activity completion by implementing IActivityEventListener<ActivityExecutionStatusChangedEventArgs>
context2.Activity.RegisterForStatusChange(Activity.ClosedEvent, this);
context2.ExecuteActivity(context2.Activity);
// get the activity from the ActivityExecutionStatusChangedEventArgs, then...
activity.UnregisterForStatusChange(Activity.ClosedEvent, this);
ActivityExecutionContextManager executionContextManager = executionContext.ExecutionContextManager;

// close the child activity's execution context
executionContextManager.CompleteExecutionContext(executionContextManager.GetExecutionContext(activity));