Windows服务已启动但无法执行任何操作 - .NET

时间:2010-02-26 21:32:21

标签: .net .net-3.5 windows-services

我有一个带有计时器(System.Timers.Timer)的.NET Windows服务(.NET 3.5)。 OnElapsed方法如下所示:

    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()产生多个线程来完成一些工作。

如何解决此问题?

2 个答案:

答案 0 :(得分:2)

ProcessStuff()GetTimerInterval()是否可能抛出异常,以致timer.Start()未执行?

然后您应该将该部分包装在try..catch中和/或添加一些日志记录,例如:

timer.Stop();
try
{
  //process some stuff here..
  ProcessStuff();
}
catch (Exception ex)
{
  // log the exception?
}
timer.Interval = GetTimerInterval();
timer.Start();

答案 1 :(得分:0)

我有两个想法。一个人创建一个转储,看看是什么,或者使用远程调试器,看看你锁定了什么。