标签:style c class blog code tar
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
标签:style c class blog code tar
原文地址:http://www.cnblogs.com/crazycxy/p/3753254.html