我有一个带有定时器(System.Timers.Timer
)的.NET Windows服务(.NET 3.5)。该OnElapsed
方法是这样的:Windows服务已启动,但什么都不做 - .NET
private void OnTimerElapsed(object source, ElapsedEventArgs e)
{
lock (this)
{
timer.Stop();
//process some stuff here..
ProcessStuff();
timer.Interval = GetTimerInterval();
timer.Start();
}
}
它,直到它神秘地停止工作,工作正常。这种情况每隔x天发生一次,尽管该服务具有启动状态,但它并未启动ProcessStuff
()方法。我使用log4net
,并且在那里或在Windows事件日志中没有记录任何内容。 ProcessStuff
()会产生多个线程来完成一些工作。
我该如何解决这个问题?
我们需要更多的数据来诊断正在发生的事情......您是否尝试过使用调试器来检查服务中线程的状态?根据ProcessStuff()和GetTimerInterval()的作用,你可以挂在某处等待这些函数完成。 – 2010-02-26 21:39:29