/// <summary> /// Default contructor. /// </summary> public TimerEx(TimerExCallback callback) { #if NETSTANDARD m_Timer = new Timer(WrapCallback(callback), null, NO_START, TimeSpan.FromMilliseconds(m_Interval)); #else m_Timer = new Timer(DEFAULT_INTERVAL); m_Timer.Elapsed += new System.Timers.ElapsedEventHandler(callback); #endif }
/// <summary> /// Default contructor. /// </summary> /// <param name="interval">The time in milliseconds between events.</param> /// <param name="autoReset">Specifies if timer is auto reseted.</param> public TimerEx(TimerExCallback callback, double interval, bool autoReset) { #if NETSTANDARD m_Interval = interval; m_AutoReset = autoReset; m_Timer = new Timer(WrapCallback(callback), null, NO_START, TimeSpan.FromMilliseconds(m_Interval)); #else m_Timer = new Timer(interval); m_Timer.Elapsed += new System.Timers.ElapsedEventHandler(callback); m_Timer.AutoReset = autoReset; #endif }
TimerCallback WrapCallback(TimerExCallback inner) { return (delegate(Object state) { if (!m_AutoReset) { if (m_AutoResetRun > 0) { Stop(); return; } m_AutoResetRun++; } inner(state); }); }