我的System.Threading.Timer(它有一个回调)永远不会可靠地触发。这是我的编程任务的一部分,我输入计时器应该从文本框运行的时间量。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;
}
而且,它设置一个标志,真该停止的循环(正在由一个线程池线程上运行,实际上所有,停止线)。
循环是这样的:
while (!stop)
{
currentTextbox.Invoke(new Action(delegate()
{
currentTextbox.AppendText((counter++) + Environment.NewLine);
currentTextbox.Update();
}));
}
我的问题是,stop
变量始终是超过5000毫秒的任何延迟假的。有没有办法“强制”回调始终开火?
这个问题可能不适用(我忘记了API)...但是你启动计时器吗? – Jaxidian
该程序只是打印出一个计数器,它不断递增,直到计时器停止。 System.Threading.Timer不需要启动;它延迟后自动启动(0为无延迟,但在我的情况下,我指定了延迟) – docaholic
@Jaxidian:'System.Threading.Timer'在您创建时启动。 –