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;
}