public void TerminateAll() { m_continueIteration = -1; for (int i = m_activeTasks.Count - 1; i >= 0; --i) { TaskBase task = m_activeTasks[i]; task.TaskInfo.State = TaskState.Terminated; RaiseTaskStateChanged(task.TaskInfo); } }
public void Destroy() { TerminateAll(); for (int i = m_activeTasks.Count - 1; i >= 0; --i) { TaskBase task = m_activeTasks[i]; Release(task); } m_activeTasks.Clear(); m_idToActiveTask.Clear(); }
private void Release(TaskBase task) { if (!task.IsAcquired) { throw new InvalidOperationException("!IsAcqired"); } task.ChildTaskActivated -= OnChildTaskActivated; task.IsAcquired = false; TaskInfo taskInfo = task.TaskInfo; if (taskInfo.State != TaskState.Active) { Memory.DestroyScope(taskInfo.TaskId); } if (taskInfo.TaskType == TaskType.Command) { if (taskInfo.Expression != null) { m_cmdExpressionTaskPool.Release(task); } else { if (taskInfo.Cmd.Code == CmdCode.Move) { m_cmdMoveTaskPool.Release(task); } else { m_cmdGenericTaskPool.Release(task); } } } else { m_taskPools[taskInfo.TaskType].Release(task); } }
private void OnChildTaskActivated(TaskBase parent, TaskInfo taskInfo) { HandleTaskActivation(parent, taskInfo); }
void ITaskPool.Release(TaskBase task) { base.Release((T)task); }