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;
        }
Example #2
0
        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!");
        }
Example #3
0
        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!");
        }