我有一个一次Timer,每15秒调用一次函数,它可以在前5次运行,但是对于第6次运行,即使创建它,任何想法都不会过去。C#System.Threading.Timer递归更新
处理时间可能需要超过15秒,如果是的话,线程A可能正在处理数据,而线程B发出新的数据请求。线程B在线程A的处理完成之前无法启动。
const int DATAREFRESH = 15000;
void RequestUpdate()
{
// Some data processing goes here
Console.WriteLine("Update");
// Set the timer
Timer t = new Timer(new TimerCallback(TimeOutCallback), null, DATAREFRESH, Timeout.Infinite);
}
private void TimeOutCallback(object state)
{
RequestUpdate();
}
在输出窗口中,“更新”显示5次,然后在此之后没有任何内容。它没有冻结,我看到〜8个线程在最后一次“更新”后终止。
我怎样才能使这个工作无限?
请使用能够描述你正在试图解决这个问题的标题。 – 2012-01-04 22:11:07
你正在使用哪一个Timer类? – phoog 2012-01-04 22:16:07
为什么不创建一个计时器实例并在回调中重置它? – phoog 2012-01-04 22:16:42