Exemplo n.º 1
0
        private void TimerElapsed(object sender, EventArgs e)
        {
            Linn.Timer t = sender as Linn.Timer;
            List <Scheduler.DCallback> callbacks = null;

            lock (iLock)
            {
                // get the timer
                foreach (KeyValuePair <Linn.Timer, List <Scheduler.DCallback> > item in iScheduledEvents)
                {
                    if (item.Key.Interval == t.Interval)
                    {
                        callbacks = item.Value;

                        iScheduledEvents.Remove(item.Key);
                        item.Key.Dispose();
                        break;
                    }
                }
            }

            if (callbacks != null)
            {
                foreach (Scheduler.DCallback callback in callbacks)
                {
                    iScheduler.Schedule(callback);
                }
            }
        }
Exemplo n.º 2
0
        public void Schedule(uint aInterval, Scheduler.DCallback aCallback)
        {
            lock (iLock)
            {
                // check existing timers
                foreach (KeyValuePair <Linn.Timer, List <Scheduler.DCallback> > item in iScheduledEvents)
                {
                    if (item.Key.Interval == aInterval)
                    {
                        item.Value.Add(aCallback);
                        return;
                    }
                }

                // add a new timer
                Linn.Timer t = new Linn.Timer();
                t.AutoReset = false;
                t.Interval  = aInterval;
                t.Elapsed  += TimerElapsed;
                t.Start();

                List <Scheduler.DCallback> list = new List <Scheduler.DCallback>();
                list.Add(aCallback);
                iScheduledEvents.Add(t, list);
            }
        }