private void LoadExistingInstance(WorkflowInstance instance, bool attaching) { WorkflowExecutor workflowResourceUNSAFE = instance.GetWorkflowResourceUNSAFE(); if (workflowResourceUNSAFE.IsInstanceValid) { IWorkflowCoreRuntime workflowCoreRuntime = workflowResourceUNSAFE; Activity rootActivity = workflowCoreRuntime.RootActivity; Guid scheduleTypeId = this.GetScheduleTypeId(workflowCoreRuntime); if (attaching && workflowCoreRuntime.IsDynamicallyUpdated) { this.LoadExistingScheduleType(scheduleTypeId, rootActivity.GetType(), true, rootActivity); } this.instanceTable.AddInstance(instance.InstanceId, rootActivity); this.controllerConduit.InstanceCreated(this.programId, instance.InstanceId, scheduleTypeId); lock (this.eventLock) { workflowResourceUNSAFE.WorkflowExecutionEvent += new EventHandler <WorkflowExecutor.WorkflowExecutionEventArgs>(this.OnInstanceEvent); foreach (Activity activity2 in WalkActivityTree(rootActivity)) { this.UpdateActivityStatus(scheduleTypeId, instance.InstanceId, activity2); } ActivityExecutionContext rootContext = new ActivityExecutionContext(rootActivity); foreach (ActivityExecutionContext context2 in WalkExecutionContextTree(rootContext)) { foreach (Activity activity4 in WalkActivityTree(context2.Activity)) { this.UpdateActivityStatus(scheduleTypeId, instance.InstanceId, activity4); } } } } }