private static void ProcessChangeQueue() { while (mChangeQueue.Count > 0) { TimerChangeEntry tce = (TimerChangeEntry)mChangeQueue.Dequeue(); Timer timer = tce.mTimer; int newIndex = tce.mNewIndex; if (timer.mList != null) { timer.mList.Remove(timer); } if (tce.mIsAdd) { timer.mNext = DateTime.Now + timer.mDelay; timer.mIndex = 0; } if (newIndex >= 0) { timer.mList = mTimers[newIndex]; timer.mList.Add(timer); } else { timer.mList = null; } tce.Free(); } }
private void ProcessChangeQueue(DateTime now) { lock ( m_ChangeQueue ) { while (m_ChangeQueue.Count > 0) { TimerChangeEntry tce = m_ChangeQueue.Dequeue(); Timer timer = tce.Timer; int newIndex = tce.NewIndex; if (timer.m_List != null) { timer.m_List.Remove(timer); } if (tce.IsAdd) { timer.m_Next = now + timer.Delay; timer.m_Index = 0; } if (newIndex >= 0) { timer.m_List = m_Timers[newIndex]; timer.m_List.Add(timer); } else { timer.m_List = null; } tce.Free(); } } }