Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确保Windows服务进程始终运行?_C#_.net_Windows Services - Fatal编程技术网

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

C# 如何确保Windows服务进程始终运行?,c#,.net,windows-services,C#,.net,Windows Services,我有一个Windows服务,它一次又一次地(在无限循环中)调用存储过程 代码如下所示: while(1) { callStoredProc(); doSomethingWithResults(); } 但是,在某些情况下,循环可能会被卡住而没有响应,但服务在技术上仍在运行 我设想有一些工具可以监控服务的运行状况,让运营团队知道如何重新启动服务 但在我的场景中,这不会有帮助,因为该服务在技术上仍在运行,但它被卡住了,无法继续 如果出现这种情况,确保此过程重新启动的最佳方法是什么 解决

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

代码如下所示:

while(1)
{
   callStoredProc();
   doSomethingWithResults();
}
但是,在某些情况下,循环可能会被卡住而没有响应,但服务在技术上仍在运行

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

但在我的场景中,这不会有帮助,因为该服务在技术上仍在运行,但它被卡住了,无法继续

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


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

Windows服务提供了各种解决问题1的方法。对于问题2,最好的办法是使用超时方法,如果服务需要超过X个时间来完成,它将重新启动或停止正在执行的操作(我不知道服务的性质,因此无法提供实现细节)


heartbeat的想法也会起作用,但是,这只是另一件需要管理/维护和安装的事情。

是的。你需要循环来心跳如果我有一个超时,我如何用代码让服务自动重启,而不需要人工干预?我是否仍会引发错误,并且在我的恢复选项中,如果出现错误,请让服务重新启动?@HenleyChiu一个选项是在不同的线程中触发代码,并在该线程上有一个超时(有不同的实现方法),如果超时过期,则强制服务重新启动。但如何强制服务重新启动?通过抛出错误?