Represents a timer manager which is the scheduler of SharedTimer.
A SharedTimer with the same scheduler will use the same ThreadPool thread to process all of the SharedTimer instances in series when they have a common interval. Call order, based on registration sequence, will be preserved.
Inheritance: IDisposable
Exemple #1
0
        internal SharedTimer(SharedTimerScheduler scheduler, int interval = 100)
        {
            if (scheduler == null)
            {
                throw new ArgumentNullException(nameof(scheduler));
            }

            if (scheduler.IsDisposed)
            {
                throw new ArgumentException("Scheduler has been disposed", nameof(scheduler));
            }

            if (interval <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(interval));
            }

            m_log       = Logger.CreatePublisher(typeof(SharedTimerScheduler), MessageClass.Component);
            m_scheduler = scheduler;
            m_interval  = interval;
            m_enabled   = false;
            m_autoReset = true;
            m_callback  = TimerCallback;
            m_scheduler = scheduler;
        }
Exemple #2
0
 //Static Constructor
 static Common()
 {
     using (Logger.AppendStackMessages("Owner", "TimeSeries.Common"))
     {
         TimerScheduler = new SharedTimerScheduler();
     }
 }
            public SharedTimerInstance(SharedTimerScheduler parentTimer, int interval)
            {
                if ((object)parentTimer == null)
                    throw new ArgumentNullException(nameof(parentTimer));

                if (interval <= 0)
                    throw new ArgumentOutOfRangeException(nameof(interval));

                m_additionalQueueItems = new ConcurrentQueue<WeakAction<DateTime>>();
                m_syncRunning = new object();
                m_syncStats = new object();
                m_parentTimer = parentTimer;
                m_interval = interval;
                m_callbacks = new LinkedList<WeakAction<DateTime>>();
                m_timer = new Timer(Callback, null, interval, interval);
            }
        internal SharedTimer(SharedTimerScheduler scheduler, int interval = 100)
        {
            if ((object)scheduler == null)
                throw new ArgumentNullException(nameof(scheduler));

            if (scheduler.IsDisposed)
                throw new ArgumentException("Scheduler has been disposed", nameof(scheduler));

            if (interval <= 0)
                throw new ArgumentOutOfRangeException(nameof(interval));

            m_log = Logger.CreatePublisher(typeof(SharedTimerScheduler), MessageClass.Component);
            m_scheduler = scheduler;
            m_interval = interval;
            m_enabled = false;
            m_autoReset = true;
            m_callback = TimerCallback;
            m_scheduler = scheduler;
        }
Exemple #5
0
            public SharedTimerInstance(SharedTimerScheduler parentTimer, int interval)
            {
                if ((object)parentTimer == null)
                {
                    throw new ArgumentNullException(nameof(parentTimer));
                }

                if (interval <= 0)
                {
                    throw new ArgumentOutOfRangeException(nameof(interval));
                }

                m_additionalQueueItems = new ConcurrentQueue <WeakAction <DateTime> >();
                m_syncRunning          = new object();
                m_syncStats            = new object();
                m_parentTimer          = parentTimer;
                m_interval             = interval;
                m_callbacks            = new LinkedList <WeakAction <DateTime> >();
                m_timer = new Timer(Callback, null, interval, interval);
            }
 //Static Constructor
 static CommonPhasorServices()
 {
     using (Logger.AppendStackMessages("Owner", "CommonPhasorServices"))
     {
         TimerScheduler = new SharedTimerScheduler();
     }
 }
 static MultiProtocolFrameParser()
 {
     using (Logger.AppendStackMessages("Owner", "MultiProtocolFrameParser"))
         TimerScheduler = new SharedTimerScheduler();
 }