/// <summary> ///删除定时任务 /// </summary> /// <param name="taskInfo"></param> /// <returns></returns> internal bool RemoveTimerTask(TimerTaskInfo taskInfo) { if (taskInfo == null || taskInfo.WheelIndex < 0 || taskInfo.WheelSlotIndex < 0 || taskInfo.TaskListIndex < 0) { return(false); } if (!m_TaskInfoDic.ContainsKey(taskInfo.Index)) { return(false); } if (taskInfo.WheelIndex < 0 || taskInfo.WheelIndex >= m_WheelArr.Length || m_WheelArr[taskInfo.WheelIndex] == null) { return(false); } m_TaskInfoDic.Remove(taskInfo.Index); int wheelIndex = taskInfo.WheelIndex; int wheelSlotIndex = taskInfo.WheelSlotIndex; int taskListIndex = taskInfo.TaskListIndex; taskInfo.OnClear(); return(m_WheelArr[wheelIndex].RemoveTimerTask(wheelSlotIndex, taskListIndex)); }
/// <summary> /// 指定 /// </summary> /// <param name="index"></param> /// <param name="taskList"></param> private void OnTimerWheelTrigger(int index, List <TimerTask> taskList) { for (int i = 0; i < taskList.Count; i++) { TimerTask task = taskList[i]; if (task == null) { continue; } TimerTaskInfo taskInfo = null; if (!m_TaskInfoDic.TryGetValue(task.Index, out taskInfo)) { continue; } if (task.RemainingWheelInMS == 0) { task.OnTrigger(); } if (taskInfo.IsClear()) { RecycleTimerTask(task); } else { m_TaskInfoDic.Remove(task.Index); taskInfo.OnClear(); if (task.IsValidTask()) { AddTimerTask(task, taskInfo); } else { RecycleTimerTask(task); } } } }