// Call the set timer to stop it. the TimeSpan seems to get created OK, but the timer.Change() fails because of the infinite value. this.SetTimer(tmrValidator, Timeout.Infinite, 60, null); private void SetTimer(System.Threading.Timer timer, int delaySeconds, int intervalSeconds, TimerCallback callback) { TimeSpan delayTime = new TimeSpan(0, 0, delaySeconds); TimeSpan intervalTime = new TimeSpan(0, 0, intervalSeconds); if (timer == null) { using (AutoResetEvent autoEvent = new AutoResetEvent(true)) { if (callback == null) callback = new TimerCallback(this.OnBlankTimerEvent); timer = new System.Threading.Timer(callback, autoEvent, delayTime, intervalTime); } } else // Reset Timer { timer.Change(delayTime, intervalTime); } }