Example #1
0
        private void Process()
        {
            _updatable.Initialize();

            var last = DateTime.UtcNow.Ticks;

            while (!_cts.IsCancellationRequested)
            {
                _updatable.Upadte(_cts.Token);

                var current = DateTime.UtcNow.Ticks;

                var next        = last + _intervalTicks;
                var ticksToNext = next - current;

                if (ticksToNext > 0)
                {
                    Thread.Sleep(TimeSpan.FromTicks(ticksToNext));
                }

                last = DateTime.UtcNow.Ticks;
            }
        }