/// <inheritdoc />
        public virtual async Task UpdateAsync()
        {
            if (Stopped)
            {
                return;
            }

            if (DateTime.UtcNow < LastUpdated.Add(Interval))
            {
                return;
            }

            await UpdateClientStatsAsync();

            LastUpdated = DateTime.UtcNow;
            InvokeUpdatedEvent(Message);
        }
示例#2
0
        public void SleepUntilNextAllowed()
        {
            if (Buzy)
            {
                throw new InvalidOperationException("Thread cannot sleep while accessor is buzy");
            }

            if (!IsUpdated)
            {
                return;
            }

            if (LastUpdated.Add(UpdateInterval) <= DateTime.Now)
            {
                return;
            }

            var sleepTime = LastUpdated.Add(UpdateInterval).Subtract(DateTime.Now);

            this.LogDebugFormat("Sleep for {0} ms", sleepTime.Milliseconds);
            Thread.Sleep(sleepTime);
        }