博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[开发笔记]-控制Windows Service服务运行
阅读量:7200 次
发布时间:2019-06-29

本文共 4158 字,大约阅读时间需要 13 分钟。

用代码实现动态控制Service服务运行状态。

效果图:

代码:

#region 启动服务        ///         /// 启动服务        ///         ///         void XServiceStart(string scname)        {            ServiceController sc = new ServiceController(scname);            ServiceControllerStatus st = sc.Status;            switch (st)            {                case ServiceControllerStatus.StopPending:                case ServiceControllerStatus.Stopped:                    sc.Start();//启动服务                    //等待服务达到指定状态                    sc.WaitForStatus(ServiceControllerStatus.Running);                    break;                default:                    break;            }        }        #endregion        #region 停止服务        ///         /// 停止服务        ///         ///         void XServiceStop(string scname)        {            ServiceController sc = new ServiceController(scname);            ServiceControllerStatus st = sc.Status;            switch (st)            {                case ServiceControllerStatus.Running:                case ServiceControllerStatus.StartPending:                case ServiceControllerStatus.Paused:                case ServiceControllerStatus.PausePending:                case ServiceControllerStatus.ContinuePending:                    sc.Stop();                    sc.WaitForStatus(ServiceControllerStatus.Stopped);                    break;                default: break;            }        }        #endregion        #region 暂停服务        ///         /// 暂停服务        ///         ///         void XServicePause(string scname)        {            ServiceController sc = new ServiceController(scname);            ServiceControllerStatus st = sc.Status;            switch (st)            {                case ServiceControllerStatus.Running:                case ServiceControllerStatus.StartPending:                    sc.Pause();                    sc.WaitForStatus(ServiceControllerStatus.Paused);                    break;                default: break;            }        }        #endregion        #region 继续服务        ///         /// 继续服务        ///         ///         void XServiceResume(string scname)        {            ServiceController sc = new ServiceController(scname);            ServiceControllerStatus st = sc.Status;            switch (st)            {                case ServiceControllerStatus.Paused:                case ServiceControllerStatus.PausePending:                    sc.Continue();                    sc.WaitForStatus(ServiceControllerStatus.Running);                    break;                default: break;            }        }        #endregion        #region 判断服务当前的运行状态        ///         /// 判断服务当前的运行状态        ///         ///         /// 
string XServiceStatus(string scname) { ServiceController sc = new ServiceController(scname); ServiceControllerStatus st = sc.Status; string result = string.Empty; switch (st) { case ServiceControllerStatus.Running: //运行中 result = "运行中"; break; case ServiceControllerStatus.Paused: result = "已暂停"; break; case ServiceControllerStatus.Stopped: result = "已停止"; break; case ServiceControllerStatus.ContinuePending: result = "即将继续"; break; case ServiceControllerStatus.PausePending: result = "即将暂停"; break; case ServiceControllerStatus.StartPending: result = "正在启动"; break; case ServiceControllerStatus.StopPending: result = "正在停止"; break; default: result = "错误"; break; } return result; } #endregion

 

对于Service服务的“开启”,“停止”操作,创建的Service服务程序默认是支持的。而“暂停”,“恢复”操作,需要在服务的属性中进行开启设置才可以。

CanPauseAndContinue          服务是否接受暂停或继续运行的请求

 

在win7及以上系统上操作时,需要以管理员身份运行才能操作Service服务,否则程序会异常。如何让程序获得管理员权限,可以查看我前一篇文章:

对于Service服务程序的创建操作,可以查看我之前的文章:

 

转载请注明出处。

你可能感兴趣的文章
解决微信小程序登录与发布的一些问题
查看>>
JVM学习笔记——程序计数器
查看>>
威胁快报|Nexus Repository Manager 3新漏洞已被用于挖矿木马传播,建议用户尽快修复...
查看>>
ios12系统的微信浏览器在软键盘收起时,页面无法回滚的bug修复
查看>>
Javascript运行机制
查看>>
Spring IOC容器实现机制
查看>>
【加法笔记系列】PN 结和单向导通原理
查看>>
-卡牌+动态信息长按保存图片注意点~
查看>>
react-redux源码分析及实现原型(上)
查看>>
Spring Boot 学习笔记(2):JDBC
查看>>
我的第一篇markdown文档
查看>>
callback
查看>>
利用Guideline实现ConstraintLayout中控件居中
查看>>
【百度地图API】如何使用suggestion--下拉列表方式的搜索建议
查看>>
均匀随机排列数组
查看>>
do_fork()函数流程分析
查看>>
阿里云ECS Centos 7.x Docker安装
查看>>
红黑树
查看>>
比较全面的gdb调试命令
查看>>
acm 网站
查看>>