Ejemplo n.º 1
0
Archivo: Timer.cs Proyecto: uvbs/Razor
        public static void Slice()
        {
            int       breakCount = 100;
            ArrayList readd      = new ArrayList();

            while (!m_Heap.IsEmpty && ((Timer)m_Heap.Peek()).TimeUntilTick < TimeSpan.Zero)
            {
                if (breakCount-- <= 0)
                {
                    break;
                }

                Timer t = (Timer)m_Heap.Pop();

                if (t != null && t.Running)
                {
                    t.OnTick();

                    if (t.Running && (t.m_Count == 0 || (++t.m_Index) < t.m_Count))
                    {
                        t.m_Next = DateTime.Now + t.m_Interval;
                        readd.Add(t);
                    }
                    else
                    {
                        t.Stop();
                    }
                }
            }

            m_Heap.AddMultiple(readd);

            ChangedNextTick();
        }