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

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

我该如何解决?

最佳答案

有没有可能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();

关于.net - Windows 服务已启动但不执行任何操作 - .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2344966/

相关文章:

C# 自定义属性简写

linq - 在 .NET 3.5 中的枚举列表上使用 List.Find 或 LINQ

asp.net - 在 Detailsview 控件中获取文本框值

c# - 系统启动/重新启动时 WMI 调用花费太多时间

c# - Windows服务(错误1053)事件日志触发器

java - 制作一个交互式Windows服务

c# - 将 Asp 单选按钮属性(值)设置为字符串

c# - c#中的字符串插入问题

c# - 如何强制msbuild和nuget将引用的Lib打包为dll?

wpf - 通过 XAML 在 WPF 中的 I18N 和 L10N