[开发笔记]-控制Windows Service服务运行
用代码实现动态控制Service服务运行状态。
效果图:
代码:
- #region 启动服务
- /// <summary>
- /// 启动服务
- /// </summary>
- /// <param name="scname"></param>
- 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 停止服务
- /// <summary>
- /// 停止服务
- /// </summary>
- /// <param name="scname"></param>
- 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 暂停服务
- /// <summary>
- /// 暂停服务
- /// </summary>
- /// <param name="scname"></param>
- 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 继续服务
- /// <summary>
- /// 继续服务
- /// </summary>
- /// <param name="scname"></param>
- 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 判断服务当前的运行状态
- /// <summary>
- /// 判断服务当前的运行状态
- /// </summary>
- /// <param name="scname"></param>
- /// <returns></returns>
- 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服务程序的创建操作,可以查看我之前的文章:
[开发笔记]-WindowsService服务程序开发 - 酷小孩 - 博客园
转载请注明出处。
[开发笔记]-控制Windows Service服务运行的更多相关文章
- 震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……
过场CG: 接到公司领导的文件指示,“小熊”需要在6月底去海外执行一个行动代号为[定时任务]的营救计划,这个计划关系到公司某个项目的生死(数据安全漏洞),作战部拟定两个作战方案: 方案一:使用务定 ...
- C# Windows Service服务的创建和调试
前言 关于Windows服务创建和调试的文章在网络上的很多文章里面都有,直接拿过来贴在这里也不过仅仅是个记录,不会让人加深印象.所以本着能够更深刻了解服务项目的创建和调试过程及方法的目的,有了这篇记录 ...
- 管理员控制Windows Service
C# 以管理员方式启动Winform,进而使用管理员控制Windows Service 问题起因: 1,) 问题自动分析Windows服务在正常运行时,确实会存在程序及人为原因导致该服务停止.为了 ...
- quartz.net结合Topshelf实现windows service服务托管的作业调度框架
topshelf可以很简单方便的实现windows service服务,详见我的一篇博客的介绍 http://www.cnblogs.com/xiaopotian/articles/5428361.h ...
- .Net Windows Service(服务) 调试安装及System.Timers.Timer 使用
Windows Service(服务) 是运行在后台的进程 1.VS建立 Windows 服务(.NET Framework) 2.添加Timer 双击Service1.cs可以拖控件(System ...
- Windows Service 服务搭配FluentScheduler实现定时任务调度
Windows Service 服务 创建Windows Service 项目 创建一个Windows Service项目,并将项目名称改为 TaskWindowService 在解决方案资源管理器内 ...
- [开发笔记]-Windows Service服务相关注意事项
注意一:报错:“本地计算机上的 *** 服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止.” 该问题主要的原因是 Service服务程序中有错误. 遇到这个问题时,无论是重新安装服务,还是 ...
- 使用C#编程语言开发Windows Service服务
转载-https://www.cnblogs.com/yubao/p/8443455.html Create Windows Service project using Visual Studio C ...
- war包部署在tomcat下,使用windows service服务方式启动tomcat服务器,在包含调用dll的模块,报dll找不到问题的解决办法
问题描述: 开发了一个需要调用dll的java web程序,在idea开发环境下运行调试没问题,可以正常运行,在tomcat/bin下,运行批处理startup.bat,启动tomcat服务器,也可以 ...
随机推荐
- Jq_文档操作方法、属性操作方法、CSS操作函数
JQuery文档操作方法 这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html(). 方法 描述 addClass() ...
- Oracle数据库和DB2数据库分页SQL的区别举例
--------------------------ORACLE数据库分页SQL举例------------------------------------------------ SELECT * ...
- JavaScript设计模式与开发实践 - 观察者模式
概述 观察者模式又叫发布 - 订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个目标对象(为了方便理解,以下将观察者对象叫做订阅者,将目标对象叫做 ...
- 项目解析- JspLibrary - part1
http://rosspc:8080/JspLibrary/ 1. logon界面解析: JS 验证用户名.密码为空 <form name="form1" method=&q ...
- img src 使用 base64 图片数据
img src 使用 base64 图片数据 在网页上显示一张图片通常是 <img src="xxx.png" > 或 <img src="www.ur ...
- dede如何新建一个ajax服务端输出文件
<?phprequire_once(dirname(__FILE__)."/include/common.inc.php");AjaxHead(); $dsql-> ...
- windows7系统配置maven环境
简介 maven的作用 1.通过在pom.xml配置的方式下载项目所需要的jar包 2.打jar包和打war包 1.环境配置 1.1 http://maven.apache.org/download ...
- HTML CSS + DIV实现局部布局
HTML CSS + DIV实现局部布局 HTML CSS + DIV实现局部布局 1.本章教大家掌握2种布局方式: 1)顶部导航菜单布局,效果图: 2)购物版块布局,效果图: 2.技术目标: 使用d ...
- 读书笔记2:HTTP协议
HTTP是什么 HTTP定义 HTTP( Hypertext Transfer Protocol, 超文本传输协议) 是在万维网上进行通信时所使用 的协议方案. HTTP的地位 了解HTTP协议的地位 ...
- hdu5879 Cure
题目链接:hdu5879 Cure 题解:用字符串输入.n很大时答案趋近与(π^2)/6. #include<cstdio> #include<algorithm> #incl ...