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

效果图:

代码:

  1. #region 启动服务
  2. /// <summary>
  3. /// 启动服务
  4. /// </summary>
  5. /// <param name="scname"></param>
  6. void XServiceStart(string scname)
  7. {
  8. ServiceController sc = new ServiceController(scname);
  9. ServiceControllerStatus st = sc.Status;
  10. switch (st)
  11. {
  12. case ServiceControllerStatus.StopPending:
  13. case ServiceControllerStatus.Stopped:
  14. sc.Start();//启动服务
  15. //等待服务达到指定状态
  16. sc.WaitForStatus(ServiceControllerStatus.Running);
  17. break;
  18. default:
  19. break;
  20. }
  21.  
  22. }
  23. #endregion
  24.  
  25. #region 停止服务
  26. /// <summary>
  27. /// 停止服务
  28. /// </summary>
  29. /// <param name="scname"></param>
  30. void XServiceStop(string scname)
  31. {
  32. ServiceController sc = new ServiceController(scname);
  33. ServiceControllerStatus st = sc.Status;
  34. switch (st)
  35. {
  36. case ServiceControllerStatus.Running:
  37. case ServiceControllerStatus.StartPending:
  38. case ServiceControllerStatus.Paused:
  39. case ServiceControllerStatus.PausePending:
  40. case ServiceControllerStatus.ContinuePending:
  41. sc.Stop();
  42. sc.WaitForStatus(ServiceControllerStatus.Stopped);
  43. break;
  44. default: break;
  45. }
  46. }
  47. #endregion
  48.  
  49. #region 暂停服务
  50. /// <summary>
  51. /// 暂停服务
  52. /// </summary>
  53. /// <param name="scname"></param>
  54. void XServicePause(string scname)
  55. {
  56. ServiceController sc = new ServiceController(scname);
  57. ServiceControllerStatus st = sc.Status;
  58. switch (st)
  59. {
  60. case ServiceControllerStatus.Running:
  61. case ServiceControllerStatus.StartPending:
  62. sc.Pause();
  63. sc.WaitForStatus(ServiceControllerStatus.Paused);
  64. break;
  65. default: break;
  66. }
  67. }
  68. #endregion
  69.  
  70. #region 继续服务
  71. /// <summary>
  72. /// 继续服务
  73. /// </summary>
  74. /// <param name="scname"></param>
  75. void XServiceResume(string scname)
  76. {
  77. ServiceController sc = new ServiceController(scname);
  78. ServiceControllerStatus st = sc.Status;
  79. switch (st)
  80. {
  81. case ServiceControllerStatus.Paused:
  82. case ServiceControllerStatus.PausePending:
  83. sc.Continue();
  84. sc.WaitForStatus(ServiceControllerStatus.Running);
  85. break;
  86. default: break;
  87. }
  88. }
  89.  
  90. #endregion
  91.  
  92. #region 判断服务当前的运行状态
  93. /// <summary>
  94. /// 判断服务当前的运行状态
  95. /// </summary>
  96. /// <param name="scname"></param>
  97. /// <returns></returns>
  98. string XServiceStatus(string scname)
  99. {
  100. ServiceController sc = new ServiceController(scname);
  101. ServiceControllerStatus st = sc.Status;
  102. string result = string.Empty;
  103. switch (st)
  104. {
  105. case ServiceControllerStatus.Running:
  106. //运行中
  107. result = "运行中";
  108. break;
  109. case ServiceControllerStatus.Paused:
  110. result = "已暂停";
  111. break;
  112. case ServiceControllerStatus.Stopped:
  113. result = "已停止";
  114. break;
  115. case ServiceControllerStatus.ContinuePending:
  116. result = "即将继续";
  117. break;
  118. case ServiceControllerStatus.PausePending:
  119. result = "即将暂停";
  120. break;
  121. case ServiceControllerStatus.StartPending:
  122. result = "正在启动";
  123. break;
  124. case ServiceControllerStatus.StopPending:
  125. result = "正在停止";
  126. break;
  127. default:
  128. result = "错误";
  129. break;
  130. }
  131. return result;
  132. }
  133.  
  134. #endregion

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

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

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

C#如何以管理员身份运行程序 - 酷小孩 - 博客园

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

[开发笔记]-WindowsService服务程序开发 - 酷小孩 - 博客园

转载请注明出处。

[开发笔记]-控制Windows Service服务运行的更多相关文章

  1. 震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……

    过场CG:   接到公司领导的文件指示,“小熊”需要在6月底去海外执行一个行动代号为[定时任务]的营救计划,这个计划关系到公司某个项目的生死(数据安全漏洞),作战部拟定两个作战方案: 方案一:使用务定 ...

  2. C# Windows Service服务的创建和调试

    前言 关于Windows服务创建和调试的文章在网络上的很多文章里面都有,直接拿过来贴在这里也不过仅仅是个记录,不会让人加深印象.所以本着能够更深刻了解服务项目的创建和调试过程及方法的目的,有了这篇记录 ...

  3. 管理员控制Windows Service

    C# 以管理员方式启动Winform,进而使用管理员控制Windows Service   问题起因: 1,) 问题自动分析Windows服务在正常运行时,确实会存在程序及人为原因导致该服务停止.为了 ...

  4. quartz.net结合Topshelf实现windows service服务托管的作业调度框架

    topshelf可以很简单方便的实现windows service服务,详见我的一篇博客的介绍 http://www.cnblogs.com/xiaopotian/articles/5428361.h ...

  5. .Net Windows Service(服务) 调试安装及System.Timers.Timer 使用

    Windows Service(服务)  是运行在后台的进程 1.VS建立 Windows 服务(.NET Framework) 2.添加Timer 双击Service1.cs可以拖控件(System ...

  6. Windows Service 服务搭配FluentScheduler实现定时任务调度

    Windows Service 服务 创建Windows Service 项目 创建一个Windows Service项目,并将项目名称改为 TaskWindowService 在解决方案资源管理器内 ...

  7. [开发笔记]-Windows Service服务相关注意事项

    注意一:报错:“本地计算机上的 *** 服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止.” 该问题主要的原因是 Service服务程序中有错误. 遇到这个问题时,无论是重新安装服务,还是 ...

  8. 使用C#编程语言开发Windows Service服务

    转载-https://www.cnblogs.com/yubao/p/8443455.html Create Windows Service project using Visual Studio C ...

  9. war包部署在tomcat下,使用windows service服务方式启动tomcat服务器,在包含调用dll的模块,报dll找不到问题的解决办法

    问题描述: 开发了一个需要调用dll的java web程序,在idea开发环境下运行调试没问题,可以正常运行,在tomcat/bin下,运行批处理startup.bat,启动tomcat服务器,也可以 ...

随机推荐

  1. Jq_文档操作方法、属性操作方法、CSS操作函数

    JQuery文档操作方法 这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html(). 方法                            描述 addClass()      ...

  2. Oracle数据库和DB2数据库分页SQL的区别举例

    --------------------------ORACLE数据库分页SQL举例------------------------------------------------ SELECT * ...

  3. JavaScript设计模式与开发实践 - 观察者模式

    概述 观察者模式又叫发布 - 订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个目标对象(为了方便理解,以下将观察者对象叫做订阅者,将目标对象叫做 ...

  4. 项目解析- JspLibrary - part1

    http://rosspc:8080/JspLibrary/ 1. logon界面解析: JS 验证用户名.密码为空 <form name="form1" method=&q ...

  5. img src 使用 base64 图片数据

    img src 使用 base64 图片数据 在网页上显示一张图片通常是 <img src="xxx.png" > 或 <img src="www.ur ...

  6. dede如何新建一个ajax服务端输出文件

    <?phprequire_once(dirname(__FILE__)."/include/common.inc.php");AjaxHead();    $dsql-> ...

  7. windows7系统配置maven环境

    简介 maven的作用 1.通过在pom.xml配置的方式下载项目所需要的jar包 2.打jar包和打war包 1.环境配置 1.1  http://maven.apache.org/download ...

  8. HTML CSS + DIV实现局部布局

    HTML CSS + DIV实现局部布局 HTML CSS + DIV实现局部布局 1.本章教大家掌握2种布局方式: 1)顶部导航菜单布局,效果图: 2)购物版块布局,效果图: 2.技术目标: 使用d ...

  9. 读书笔记2:HTTP协议

    HTTP是什么 HTTP定义 HTTP( Hypertext Transfer Protocol, 超文本传输协议) 是在万维网上进行通信时所使用 的协议方案. HTTP的地位 了解HTTP协议的地位 ...

  10. hdu5879 Cure

    题目链接:hdu5879 Cure 题解:用字符串输入.n很大时答案趋近与(π^2)/6. #include<cstdio> #include<algorithm> #incl ...