/// <inheritdoc /> public virtual async Task UpdateAsync() { if (Stopped) { return; } if (DateTime.UtcNow < LastUpdated.Add(Interval)) { return; } await UpdateClientStatsAsync(); LastUpdated = DateTime.UtcNow; InvokeUpdatedEvent(Message); }
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); }