如何解除排队的线程:c#

本文关键字:线程 排队 何解 | 更新日期: 2023-09-27 18:12:15

我有计时器回调线程,每1秒执行一个特定的函数。在某些事件后,我通过处理旧值并将其设置为新值(60秒)将计时器更改为60秒。即使在我处置之后,我看到函数每秒都在执行。我相信一些线程请求已经从以前的计时器值排队,因为执行函数的时间大约需要3秒。这是线程函数

 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);

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

如何解除排队的线程:c#

正如这个答案所说

可靠地停止System.Threading.Timer?

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