首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有计时器的.NET Windows服务停止响应

具有计时器的.NET Windows服务停止响应
EN

Stack Overflow用户
提问于 2008-12-29 13:55:17
回答 7查看 13K关注 0票数 18

我有一个用c#编写的windows服务。它内部有一个计时器,可以定期触发一些函数。所以我的服务的框架是:

代码语言:javascript
复制
public partial class ArchiveService : ServiceBase
{
    Timer tickTack;
    int interval = 10;
    ...
 
    protected override void OnStart(string[] args)
    {
        tickTack = new Timer(1000 * interval);

        tickTack.Elapsed += new ElapsedEventHandler(tickTack_Elapsed);
        tickTack.Start();
    }

    protected override void OnStop()
    {            
        tickTack.Stop();
    }    
    
    private void tickTack_Elapsed(object sender, ElapsedEventArgs e)
    {
        ...
    }
}

它工作一段时间(例如10-15天),然后停止。我的意思是,服务显示为正在运行,但它没有做任何事情。我做了一些日志记录,问题可能出在计时器上,因为在此时间间隔之后,它不会调用tickTack_Elapsed函数。

我正在考虑不使用计时器重写它,使用一个无限的循环,在我设置的时间量内停止处理。这也不是一个优雅的解决方案,我认为它可能会对记忆产生一些副作用。

计时器从System.Timers命名空间中使用,环境是Windows2003。我在不同服务器上的两个不同服务中使用了这种方法,但两者都产生了这种行为(这就是为什么我认为它以某种方式连接到我的代码或框架本身)。

有没有人经历过这种行为?会出什么问题呢?

编辑:

我编辑了这两个服务。其中一个得到了很好的尝试--到处捕捉和更多的日志记录。第二个人定期进行计时器再利用。从那以后他们都没有停止,所以如果这种情况再持续一周,我将结束这个问题。到目前为止,感谢大家。

编辑:

我结束这个问题是因为什么都没发生。我的意思是,我做了一些更改,但这些更改与这件事并不相关,从那时起,这两个服务都运行得很顺利。请将其标记为“已关闭,因为不再相关”。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/397744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档