如何解除排队的线程: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);
有人能帮我解决这个问题吗?
正如这个答案所说
可靠地停止System.Threading.Timer?
- 基本上你可以使用
System.Timers.Timer
- 如果你不能这样做,你可以做
this.Timer.Change(Timeout.Infinite, Timeout.Infinite);