public void SetSamplingInterval(double samplingInterval)
{
lock (m_lock)
{
if (samplingInterval == -1)
{
return;
}
// subtract the previous sampling interval.
long oldSamplingInterval = (long)(m_samplingInterval*TimeSpan.TicksPerMillisecond);
if (oldSamplingInterval < m_nextSamplingTime)
{
m_nextSamplingTime -= oldSamplingInterval;
}
m_samplingInterval = samplingInterval;
// calculate the next sampling interval.
long newSamplingInterval = (long)(m_samplingInterval*TimeSpan.TicksPerMillisecond);
if (m_samplingInterval > 0)
{
m_nextSamplingTime += newSamplingInterval;
}
else
{
m_nextSamplingTime = 0;
}
}
}