/// <summary> /// 定时器跑 /// </summary> private void Run() { if (m_TimerManager.Count <= 0) { return; } lock (m_TimerManager) { List <int> timerKey = new List <int>(); IEnumerator enumerator = m_TimerManager.Values.GetEnumerator(); while (enumerator.MoveNext()) { TimerInfo timerInfo = enumerator.Current as TimerInfo; if (timerInfo == null) { continue; } // 校验是否到期 if (timerInfo.stop) { continue; } if (timerInfo.delete) { timerKey.Add(timerInfo.timerID); continue; } //时间++ timerInfo.m_TempTimeVal += interval; //时间还没到一个间隔 if (timerInfo.m_TempTimeVal < timerInfo.m_TimeInterval) { continue; } // 运行间隔(持续次数) --timerInfo.m_Repeats; timerInfo.m_TempTimeVal = 0; //回调 if (timerInfo.m_Callback != null) { timerInfo.m_Callback(timerInfo.timerID, timerInfo.m_Repeats); } //运行间隔(持续次数) if (timerInfo.m_Repeats <= 0) { timerInfo.delete = true; timerKey.Add(timerInfo.timerID); if (timerInfo.m_timeOverCall != null) { timerInfo.m_timeOverCall(timerInfo.m_TimeInterval); } } } //按照key移除 for (int i = 0; i < timerKey.Count; i++) { TimerInfo temp = null; if (m_TimerManager.TryGetValue(timerKey[i], out temp) && temp != null) { m_TimerManager.Remove(timerKey[i]); } } timerKey.Clear(); timerKey = null; } }