Example #1
0
 /// <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;
     }
 }