private void OnTrackingTick(object sender, EventArgs e)
{
// If no change in tracking index over last interval
if (_trackingIndex == _cacheTrackingIndex)
{
// Kill timer and generate the change event
_trackingEventTimer.Stop();
// But only generate if actual event would yield a different value
if (_eventTrackingIndex != _trackingIndex)
OnTrackingImage(new ImageSelectEventArgs(_imageList, _trackingIndex));
}
else
{
// Cache the updated value and wait for next tick before generating event
_cacheTrackingIndex = _trackingIndex;
}
}