protected virtual void OnIntervalComplete(TimerEventArgs e) { IntervalComplete?.Invoke(this, e); }
protected virtual void OnTimerComplete(TimerEventArgs e) { TimerComplete?.Invoke(this, e); }
protected virtual void OnStateChanged(TimerEventArgs e) { StateChanged?.Invoke(this, e); }