繁体   English   中英

如何确保Windows服务进程始终运行?

[英]How to ensure Windows service process is always running?

我有一个Windows服务,它反复(在无限循环中)调用存储的proc。

代码如下:

while(1)
{
   callStoredProc();
   doSomethingWithResults();
}

但是,在某些情况下可能会出现循环卡住而无响应,但服务在技术上仍在运行的情况。

我想象有一些工具可以监视服务的运行状况,让运营团队知道重新启动它。

但是对于我的情况,这将无济于事,因为该服务在技术上仍将运行,但是它被卡住并且无法继续。

如果发生这种情况,确保此过程重新启动的最佳方法是什么?

解决方案是使用任务调度程序检查此过程的心跳,并在一段时间内无心跳时重新启动服务吗? 是否有另一个单独的线程来监视第一个过程的进度?

Windows服务具有解决问题1的各种恢复选项 。对于问题2,最好的选择是使用超时方法,如果该服务花费的时间超过X的时间来完成,它将重新启动或停止其工作(我不会(您不了解服务的性质,因此无法提供实施细节)。

心跳的想法也将起作用,但是,这成为管理/维护和安装的另一件事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM