public int DoTimer() { DateTime timeNow = DateTime.Now; int count = 0; while (true) { if (m_timerList == null || m_timerList.Count == 0) { return(count); } TimerItem timer = m_timerList.Top(); if (timer.NeedRemove) { m_timerList.Pop(); continue; } if (timeNow >= timer.Time) { if (timer.Loop > 0) { timer.Loop--; } if (timer.Loop == 0 || timer.TimeOffset.Ticks == 0) { m_timerList.Pop(); } else { m_timerList.Pop(); timer.Time = timer.Time.Add(timer.TimeOffset); m_timerList.Push(timer); } count++; timer.Delegate(timer, timer.UserData); } else { return(count); } } }