服务一般都能正常的运行,但有时候也会有一些假死现象,比如公司有一考勤服务就因为依赖于硬件厂家的api,
但厂家api运行一段时间后会默名的假死,引起整个服务假死,因为这一假死现象具有不确定性,所以不太可能
看到假死后手动去进行启动。
目前本人知道的有两种方法解决这种情况:
1.写另一个服务,对此当前服务进行监听【需要一些共同数据来判断是否为假死】,一但发现假死,进行重新启动
2.利用服务本身进行重启。
a.打开 控制面板-》管理工具-》服务,找到需要自动重启服务,点击右键-》属性,点击 恢复 选项卡, 将 ”第一次失败(F)",”第二次失败(S)",”后续失败(U)"都设定为"重新启动服务",点击确定,如图:
b.服务程序中开一线程,进行假死判断, 一旦发现假死,执行 Environment.Exit(1); 这样服务在退出后会重新进行启动
注:此方法前提条件是判断假死的线程还能正常运行。