首页 > 代码库 > 保证依赖的服务已全部启动
保证依赖的服务已全部启动
1.功能介绍:
保证配置文件中,设置的服务已全部启动;未启动的服务,以异常日志的形式记录。
2.设计思路:
Step1:配置文件设置需要默认启动的服务名称
Step2:声明一个服务类对象sc,并从配置文件中的文件名读取出来放于数组depenentServiceArray当中
Step3:遍历服务名称集合。若服务未启动,则启动该服务,并记录日志;若服务异常,则记录服务异常日志
Step4:判断服务是否全部启动。若没有全部启动,则线程休眠规定时间,再次循环,直到服务成功启动;若完成启动,则退出
3.代码片段:
public class ServiceProcessorUtil { public static void CheckDependentServiceAndWait() { string dependentServices = ConfigurationManager.AppSettings["DependentServices"]; //从配置文件读取依赖服务集 if (!string.IsNullOrEmpty(dependentServices)) { bool success; System.ServiceProcess.ServiceController sc; string[] depenentServiceArray = dependentServices.Split(new char[] { ‘,‘ }, StringSplitOptions.RemoveEmptyEntries); while (true) { success = true; foreach (string serviceName in depenentServiceArray) //遍历依赖的服务集 { sc = new System.ServiceProcess.ServiceController(serviceName); //初始化计算机上与服务有关的类 if (sc != null) { try { if (sc.Status != System.ServiceProcess.ServiceControllerStatus.Running) { sc.Start(); //ExceptionUtil:异常处理公共方法 ExceptionUtil.WriteLog(new Exception("依赖的服务:" + serviceName + "不存在或未正常运行")); success = false; break; } } catch { ExceptionUtil.WriteLog(new Exception("依赖的服务:" + serviceName + "未正常运行")); success = false; break; } } else { ExceptionUtil.WriteLog(new Exception("依赖的服务:" + serviceName + "不存在")); success = false; break; } sc.Close(); sc.Dispose(); } if (success) { break; } else { Thread.Sleep(Convert.ToInt16(ConfigurationManage.AppSettings["ThreadSleepTime"]) * 1000); } } } } }
保证依赖的服务已全部启动
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。