|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 |
using
System;using
System.ServiceProcess;using
System.Diagnostics;using
System.Threading;namespace
ServiceControllerSample{ class
Program { public
enum SimpleServiceCustomCommands { StopWorker = 128, RestartWorker, CheckWorker }; static
void Main(string[] args) { ServiceController[] scServices; scServices = ServiceController.GetServices(); foreach
(ServiceController scTemp in
scServices) { if
(scTemp.ServiceName == "Simple Service") { // Display properties for the Simple Service sample // from the ServiceBase example. ServiceController sc = new
ServiceController("Simple Service"); Console.WriteLine("Status = "
+ sc.Status); Console.WriteLine("Can Pause and Continue = "
+ sc.CanPauseAndContinue); Console.WriteLine("Can ShutDown = "
+ sc.CanShutdown); Console.WriteLine("Can Stop = "
+ sc.CanStop); if
(sc.Status == ServiceControllerStatus.Stopped) { sc.Start(); while
(sc.Status == ServiceControllerStatus.Stopped) { Thread.Sleep(1000); sc.Refresh(); } } // Issue custom commands to the service // enum SimpleServiceCustomCommands // { StopWorker = 128, RestartWorker, CheckWorker }; sc.ExecuteCommand((int)SimpleServiceCustomCommands.StopWorker); sc.ExecuteCommand((int)SimpleServiceCustomCommands.RestartWorker); sc.Pause(); while
(sc.Status != ServiceControllerStatus.Paused) { Thread.Sleep(1000); sc.Refresh(); } Console.WriteLine("Status = "
+ sc.Status); sc.Continue(); while
(sc.Status == ServiceControllerStatus.Paused) { Thread.Sleep(1000); sc.Refresh(); } Console.WriteLine("Status = "
+ sc.Status); sc.Stop(); while
(sc.Status != ServiceControllerStatus.Stopped) { Thread.Sleep(1000); sc.Refresh(); } Console.WriteLine("Status = "
+ sc.Status); String[] argArray = new
string[] { "ServiceController arg1", "ServiceController arg2"
}; sc.Start(argArray); while
(sc.Status == ServiceControllerStatus.Stopped) { Thread.Sleep(1000); sc.Refresh(); } Console.WriteLine("Status = "
+ sc.Status); // Display the event log entries for the custom commands // and the start arguments. EventLog el = new
EventLog("Application"); EventLogEntryCollection elec = el.Entries; foreach
(EventLogEntry ele in
elec) { if
(ele.Source.IndexOf("SimpleService.OnCustomCommand") >= 0 | ele.Source.IndexOf("SimpleService.Arguments") >= 0) Console.WriteLine(ele.Message); } } } } }}// This sample displays the following output if the Simple Service// sample is running://Status = Running//Can Pause and Continue = True//Can ShutDown = True//Can Stop = True//Status = Paused//Status = Running//Status = Stopped//Status = Running//4:14:49 PM - Custom command received: 128//4:14:49 PM - Custom command received: 129//ServiceController arg1//ServiceController arg2 |
以上代码转自msdn:http://msdn.microsoft.com/zh-cn/library/system.serviceprocess.servicecontroller(v=vs.110).aspx
今天自己调试了一个ServicesController ,本来一个停止服务由于没有刷新,始终在一个状态下
|
1
2
3
4
5 |
while
(sc.Status != ServiceControllerStatus.Stopped) { Thread.Sleep(1000); } |
如果是怎么写的话,状态会一直在Stoppending
需要加入一句sc.Refresh();
while (sc.Status != ServiceControllerStatus.Stopped) { Thread.Sleep(1000); sc.Refresh(); }
|
1 |
|
ServicesController 的使用,布布扣,bubuko.com
原文:http://www.cnblogs.com/crazycxy/p/3753254.html