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

时间:2013-11-22 21:07:40

标签: c# .net windows-services

我有一个Windows服务,它一遍又一遍地调用存储过程(在无限循环中)。

代码如下所示:

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

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

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

但对于我的方案,这无济于事,因为该服务仍将在技术上运行,但它已经卡住而无法继续。

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

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

1 个答案:

答案 0 :(得分:2)

Windows服务有各种recovery options来处理问题1.对于问题2,最好的办法是使用超时方法,如果服务花费的时间超过X,则重新启动或停止它正在做什么(我不知道你的服务的性质,所以不能提供实现细节。)

然而,心跳的想法也会起作用,只是成为管理/维护的另一个事物。安装。