我的 System.Threading.Timer (具有回调)永远不会可靠地触发。这是我的编程任务的一部分,我在其中输入计时器应该从文本框中运行的时间量。
定时器声明如下:
System.Threading.Timer timer = new System.Threading.Timer(WorkerObject.callback, null, delay, Timeout.Infinite);
延迟只是int
描述回调第一次触发的延迟(它应该只触发一次)。
回调方法是这样的:
public static void callback(Object stateinfo)
{
stop = true;
}
所做的只是将标志设置为 true 以停止循环(由 ThreadPool 上的线程运行,实际上是停止线程)。
循环如下所示:
while (!stop)
{
currentTextbox.Invoke(new Action(delegate()
{
currentTextbox.AppendText((counter++) + Environment.NewLine);
currentTextbox.Update();
}));
}
我的问题是stop
对于超过 5000 毫秒的任何延迟,该变量始终为假。有没有办法“强制”回调始终触发?