void Update() { this.lastFrameTime = DateTime.Now; while ((DateTime.Now - this.lastFrameTime).TotalMilliseconds < standardDeltaTime && this.execlusiveTaskList.Count > 0) { LinkedListNode <AbstractTask> last = execlusiveTaskList.Last; AbstractTask task = last.Value; task.onComplete += new Action(() => { execlusiveTaskList.Remove(last); }); switch (task.status) { case eTaskStatus.Invalid: execlusiveTaskList.Remove(last); break; case eTaskStatus.WillDo: task.Start(); break; case eTaskStatus.Doing: task.Update(); break; } this.lastFrameTime = DateTime.Now; } }
private void StartSubTask() { current = subTasks.Dequeue(); current.onComplete += SubTaskCompleteCallback; current.Start(); }