private void ScheduleNextUpdate()
{
long now = HiResClock.UtcNow.Ticks;
if (m_nextUpdateTime > 0)
{
m_nextUpdateTime += m_actualUpdateRate*TimeSpan.TicksPerMillisecond;
}
else
{
m_nextUpdateTime = now + m_actualUpdateRate*TimeSpan.TicksPerMillisecond;
}
// Utils.Trace("NextUpdateTime={0:mm:ss.fff}, ActualUpdateRate={1}", new DateTime(m_nextUpdateTime), m_actualUpdateRate);
for (int ii = 0; ii < m_items.Count; ii++)
{
// check if item is being sampled independently.
if (m_items[ii].SamplingRate >= 0)
{
// check if the update time has already passed.
if (m_items[ii].NextUpdateTime < now)
{
m_items[ii].NextUpdateTime = now + m_items[ii].ActualSamplingRate*TimeSpan.TicksPerMillisecond;
}
}
// turn off item level update time checks.
else
{
m_items[ii].NextUpdateTime = -1;
}
}
}