C#获得服务,判断服务状态,启动服务
2015-12-23 10:20
1126 查看
获取服务
首先要添加引用:System.ServiceProcess
然后导入命名空间:
using System.ServiceProcess;
//获得服务集合 var serviceControllers = ServiceController.GetServices(); //遍历服务集合,打印服务名和服务状态 foreach (var service in serviceControllers) { Console.WriteLine("ServiceName:{0}\t\tServiceStatus:{1}", service.ServiceName, service.Status); }
启动服务
//获取指定服务,若服务状态不是Runing就Start该服务 var server = serviceControllers.FirstOrDefault(service => service.ServiceName == serviceName); if (server!=null && server.Status != ServiceControllerStatus.Running) { server.Start(); }
开一个线程定期检测服务状态
static void Main() { ThreadPool.RegisterWaitForSingleObject(new AutoResetEvent(true), new WaitOrTimerCallback(TryStartRServer3), null, 30000, false); } private static void TryStartRServer3(object state, bool timedout) { var serviceControllers = ServiceController.GetServices(); var server = serviceControllers.FirstOrDefault(service => service.ServiceName == "RServer3"); if (server != null && server.Status != ServiceControllerStatus.Running) { server.Start(); } }
相关文章推荐
- C# 操作XML
- C# WinForm 在父窗体与子窗体之间互相调用变量或方法
- c# 组元(Tuple)
- VS2013上利用InstallShield2013LimitedEdition/C#生成安装包
- C# 自定义事件
- 一个打印日志类
- C#_IEnumerable和IEnumerable<T>
- C#中的委托和事件(续)
- C# 中的委托和事件
- C#_LINQ数据查询
- 分分搞懂c#中的委托
- C#下用Emgucv对图片进行灰度化、二值化、边缘检测、膨胀腐蚀运算、霍夫变换进行表格识别
- 造轮子_C#中yield return用法分析
- C# string.split 分割字符串
- C# 多线程的自动管理(线程池)
- C#生成缩略图,指定像素大小
- GPS定位代码C# VS2005 Sample Code
- C#泛型
- c#面向对象基础 静态成员、构造函数、命名空间与类库
- C# 强制关闭当前程序进程(完全Kill掉不留痕迹)