ServicesController 的使用

?





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

时间: 2024-10-24 17:38:00

ServicesController 的使用的相关文章

考试题目

Q1. An administrator wants to provide users restricted access. The users should only be able to perform the followingtasks:- Create and consolidate virtual machine snapshots- Add/Remove virtual disks- Snapshot ManagementWhich default role in vCenter