public void TimerMain(IResetableTask resetInterface) { DateTime now; int i, j; bool loaded; while (resetInterface.IsActive()) { ProcessChangeQueue(); loaded = false; for (i = 0; i < mTimers.Length; i++) { now = DateTime.Now; if (now < mNextPriorities[i]) { break; } mNextPriorities[i] = now + mPriorityDelays[i]; for (j = 0; j < mTimers[i].Count; j++) { var t = mTimers[i][j]; if (!t.Queued && now > t.Next) { t.Queued = true; lock (Timer.Queue) { Timer.Queue.Enqueue(t); } loaded = true; if (t.Count != 0 && (++t.Index >= t.Count)) { t.Stop(); } else { t.Next = now + t.Interval; } } } } if (loaded) { resetInterface.Set(); } mSignal.WaitOne(10, false); } // while resetInterface.IsActive() } // TimerMain()
public void TimerMain(IResetableTask resetInterface) { DateTime now; int i, j; bool loaded; while (resetInterface.IsActive()) { ProcessChangeQueue(); loaded = false; for (i = 0; i < mTimers.Length; i++) { now = DateTime.Now; if (now < mNextPriorities[i]) { break; } mNextPriorities[i] = now + mPriorityDelays[i]; for (j = 0; j < mTimers[i].Count; j++) { var t = mTimers[i][j]; if (!t.Queued && now > t.Next) { t.Queued = true; lock (Timer.Queue) { Timer.Queue.Enqueue(t); } loaded = true; if (t.Count != 0 && (++t.Index >= t.Count)) { t.Stop(); } else { t.Next = now + t.Interval; } } } } if (loaded) { resetInterface.Set(); } mSignal.WaitOne(10, false); } // while resetInterface.IsActive() }