我想我找到了答案。复合活动每次想要启动子活动时都需要为子活动创建新的 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));