public MicrosecondTimer(MicroTimerElapsedEventHandler handler, uint intervalInMicroseconds) { if (intervalInMicroseconds == 0) { throw new ArgumentException("Must not be greater than zero", nameof(intervalInMicroseconds)); } _handler = handler ?? throw new ArgumentNullException(nameof(handler)); _timerIntervalInMicroSec = intervalInMicroseconds; }
public void UnregisterTask(MicroTimerElapsedEventHandler handler) { bool isLogRequired = false; lock (lockObj) { if (counter == 1) { // we leave the handler as it will always be the same! //timer.MicroTimerElapsed -= handler; timer.Enabled = false; // async } else isLogRequired = true; --counter; } if (isLogRequired) Log.DebugFormat("There are still others waiting events from this timer, so let it run!"); }
public void RegisterTask(MicroTimerElapsedEventHandler handler, int microSecIntervall) { bool isLogRequired = false; if (!timer.IsEventHandlerRegistered(handler)) { timer.MicroTimerElapsed += handler; } lock (lockObj) { if (counter >= 1) isLogRequired = true; else { timer.Interval = microSecIntervall; timer.Start(); } ++counter; } if (isLogRequired) Log.DebugFormat("There is already a timer registered, no need to add another!"); }