如何启动/停止服务?

silentchan 2006-01-17 12:56:58
我是这样写的:
if(sc.Status==ServiceControllerStatus.Running)
sc.Stop();

if(sc.Status==ServiceControllerStatus.stopped)
sc.Start();
为什么一旦停止服务就启动不起来了?去掉sc.Start();前的判断条件又可以启动了!高手指教!
...全文
489 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
alan001 2006-01-19
  • 打赏
  • 举报
回复
關注
silentchan 2006-01-19
  • 打赏
  • 举报
回复
延时试过的,也不行
lostowner 2006-01-19
  • 打赏
  • 举报
回复
停止与开始之间加一个延时看看
silentchan 2006-01-19
  • 打赏
  • 举报
回复
似乎sc.Status属性只能执行一次,再次执行依然是上次的结果,郁闷啊!请指教!
silentchan 2006-01-19
  • 打赏
  • 举报
回复
if(sc.Status==ServiceControllerStatus.ContinuePending)
MessageBox.Show("服务即将继续");
if(sc.Status==ServiceControllerStatus.Paused)
MessageBox.Show("服务已暂停");
if(sc.Status==ServiceControllerStatus.PausePending)
MessageBox.Show("服务即将暂停");
if(sc.Status==ServiceControllerStatus.Running)
MessageBox.Show("服务正在运行");
if(sc.Status==ServiceControllerStatus.StartPending)
MessageBox.Show("服务正在启动");
if(sc.Status==ServiceControllerStatus.Stopped)
MessageBox.Show("服务已停止");
我将上面的加入程序后,执行后,效果正确,但是不关闭程序,在服务管理器改变服务的状态后再执行,出错,服务的状态还是原来的状态,没有变化!!
mumuliang 2006-01-19
  • 打赏
  • 举报
回复
你这样写,然后运行一下就知道到底怎么回事了

if(sc.Status==ServiceControllerStatus.Running)
sc.Stop();
if(sc.Status==ServiceControllerStatus.ContinuePending)
MessageBox.Show("服务即将继续");
if(sc.Status==ServiceControllerStatus.Paused)
MessageBox.Show("服务已暂停");
if(sc.Status==ServiceControllerStatus.PausePending)
MessageBox.Show("服务即将暂停");
if(sc.Status==ServiceControllerStatus.Running)
MessageBox.Show("服务正在运行");
if(sc.Status==ServiceControllerStatus.StartPending)
MessageBox.Show("服务正在启动");
if(sc.Status==ServiceControllerStatus.StopPending)
MessageBox.Show("服务正在停止");
虚拟过客 2006-01-18
  • 打赏
  • 举报
回复
gz
真相重于对错 2006-01-18
  • 打赏
  • 举报
回复
ServiceControllerStatus 枚举 [C#]请参见
System.ServiceProcess 命名空间 | Status | ServiceControllerStatus 枚举(Visual J# 语法) | C++ 托管扩展编程
要求
命名空间: System.ServiceProcess

平台: Windows NT Server 4.0, Windows NT Workstation 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列

程序集: System.Serviceprocess (在 System.Serviceprocess.dll 中)
语言
C#

C++

JScript

Visual Basic

全部显示
指示服务的当前状态。

[Visual Basic]
<Serializable>
Public Enum ServiceControllerStatus

[C#]
[Serializable]
public enum ServiceControllerStatus

[C++]
[Serializable]
__value public enum ServiceControllerStatus

[JScript]
public
Serializable
enum ServiceControllerStatus

备注
ServiceController 类的实例使用 ServiceControllerStatus 类,指示现有服务是否正在运行、已停止、已暂停或者“开始”、“停止”、“暂停”或“继续”命令是否挂起。

成员
成员名称 说明
ContinuePending 服务即将继续。
Paused 服务已暂停。
PausePending 服务即将暂停。
Running 服务正在运行。
StartPending 服务正在启动。
Stopped 服务未运行。
StopPending 服务正在停止。
zhangjianying 2006-01-18
  • 打赏
  • 举报
回复
if(sc.Status==ServiceControllerStatus.Running)
sc.Stop();
else
sc.Start();
silentchan 2006-01-18
  • 打赏
  • 举报
回复
现在可以开始启动停止,但是无法显示sc.status的状态,只能显示一次。
icecools 2006-01-17
  • 打赏
  • 举报
回复
那你跟进去看看sc.Status是什么值啊,说不叮不是stopped

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧