2016-10-07 45 views
0

我有定时器回调线程每1秒执行一个特定的功能。在某些事件发生后,我通过处理旧值并将其设置为新值(60秒)将计时器更改为60秒。即使我处置后,我看到该功能正在执行每秒。我相信一些线程请求已经从先前的定时器值排队,因为执行该函数所需的时间大约需要3秒左右。 这是我的线程函数如何解除排队的线程:C#

private void ThreadFunction(object sender) 
{   
     getEvent(); 
     return; 
} 

这是getEvent功能:

private void getEvent() { 
mutex.WaitOne() 
//do the task 
. 
. 
mutex.ReleaseMutex() 
} 

然而计时器即使我改变为60秒我仍然看到正在执行上述功能的每一秒

这样的事情设置为新的计时器值

eventThreadTimer.Dispose(); 
eventThreadTimer= new System.Threading.Timer(CallBack, null, dueTimeInterval, dueTimeInterval); 

有人能帮我解决这个问题吗?

回答

0

由于这种回答说

Reliably stop System.Threading.Timer?

  • 基本上,你可以使用System.Timers.Timer
  • 如果你不能做到这一点,你可以做this.Timer.Change(Timeout.Infinite, Timeout.Infinite);