什么是主动监视.NET Windows服务是否仍在运行(例如未挂起)的最佳方法?该服务需要定期响应由计时器引发的事件。
谢谢,
Jon
一种方法是您可以在.NET中创建自己的性能计数器:
http://msdn.microsoft.com/zh-cn/library/5e3s61wf(VS.71).aspx
然后将计数器与定时器绑定,使其与“活动时间(Seconds active)”相关联。
你可以创建一个命名事件或互斥体,然后在代码执行时切换它。然后外部程序可以看到这个脉冲作为程序正在运行的指示。
我还使用了在另一个线程中运行的内部看门狗系统。该线程查看主线程的活动,例如日志输出或切换事件。如果没有看到活动,则认为服务已挂起,我会关闭服务。在这种情况下,您可以配置Windows自动重新启动停止的服务,这可能会清除问题(只要不是内部逻辑错误)。
我所使用的服务还有写入日志的文本日志。此外,对于即将“休眠一段时间”的服务,我记录下下次唤醒的时间。我使用MTAIL来监视输出日志。