/// <summary> /// 清空所有的任务 /// </summary> public void ClearTaskList() { taskQueue.Clear(); OnTaskChanged?.InvokeAll(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); }
private void TaskThreadHandler() { while (!bExit) { //当前没有任务 if (taskQueue.Count == 0) { Thread.Sleep(1000); continue; } var currentTask = taskQueue.Dequeue(); RunningTask = currentTask; OnTaskChanged?.InvokeAll(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, currentResponse)); OnTaskStart?.InvokeAll(this); KancolleTaskResult result = null; if (currentTask is OrganizeTask) { result = Organize(currentTask as OrganizeTask); } else if (currentTask is SupplyTask) { result = Supply(currentTask as SupplyTask); } else if (currentTask is QuestTask) { result = Quest(currentTask as QuestTask); } else if (currentTask is MissionTask) { result = Mission(currentTask as MissionTask); } else if (currentTask is MapTask) { result = Map(currentTask as MapTask); } else if (currentTask is BattleTask) { result = Battle(currentTask as BattleTask); } else if (currentTask is RemodelTask) { result = Remodel(currentTask as RemodelTask); } else if (currentTask is RepairTask) { result = Repair(currentTask as RepairTask); } else if (currentTask is RefreshDataTask) { result = RefreshData(currentTask as RefreshDataTask); } if (result == null) { result = new KancolleTaskResult(currentTask, KancolleTaskResultType.Fail, $"未能处理当前类型任务【{currentTask.GetType().Name}】", UnknownTaskType); } RunningTask = null; LastResult = result; OnTaskFinished?.Invoke(this, result); Thread.Sleep(1000); } MessageBox.Show("thread finish"); }
/// <summary> /// 在优先级队列中插入一个新的任务,该任务会在合适的时机被执行 /// 该函数将不再对外可用 /// </summary> /// <param name="task"></param> private void EnqueueTask(KancolleTask task) { taskQueue.Enqueue(task, (int)task.Priority); OnTaskChanged?.InvokeAll(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, task)); }