コード例 #1
0
ファイル: TaskExecute.cs プロジェクト: ideadreamDefy/Defy
 private void HandleTaskEvent(BaseTask Target, TASK_EVENT ev)
 {
     switch (ev)
     {
         case TASK_EVENT.TASK_EXECUTE:
             mCallBack(ev, Target);
             Target.OnExecute();
             DebugKit.Log("Execute Task:" + Target.Description);
             break;
         case TASK_EVENT.TASK_FINISH:
             mCallBack(ev, Target);
             Target.HandleTaskEvent -= HandleTaskEvent;
             DebugKit.Log("Finish Task:" + Target.Description);
             Target.OnFinish();
             TaskLoop();
             break;
         case TASK_EVENT.TASK_CANCEL:
             mIsRuning = false;
             Target.HandleTaskEvent -= HandleTaskEvent;
             Target.OnCancel();
             OnCancel();
             DebugKit.Log("Cancel Task:" + Target.Description + " Message:" + Target.Message);
             mCallBack(ev, Target);
             break;
     }
 }
コード例 #2
0
ファイル: TaskExecute.cs プロジェクト: ideadreamDefy/Defy
 public bool Push(BaseTask task)
 {
     System.Diagnostics.Debug.Assert(!mIsRuning);
     if (mIsRuning)
         return false;
     mTaskQueue.Enqueue(task);
     return true;
 }
コード例 #3
0
ファイル: TaskExecute.cs プロジェクト: ideadreamDefy/Defy
 private void TaskLoop()
 {
     if (mTaskQueue.Count == 0)
     {
         mIsRuning = false;
         DebugKit.Log("Task Complete");
         mCallBack(TASK_EVENT.TASK_COMPLETE, mCurrentTask);
         return;
     }
     mCurrentTask = mTaskQueue.Dequeue();
     mCurrentTask.HandleTaskEvent += HandleTaskEvent;
     mCurrentTask.Execute();
 }