Убедитесь, что служба Windows запущена из Visual Basic .Net - PullRequest
1 голос
/ 10 февраля 2010

У меня есть служба WCF, размещенная в службе Windows (с использованием методов, описанных здесь ), и она прекрасно работает. Сейчас я пишу внешнее приложение (VB.Net), которое должно вызывать эту службу, но я не хочу, чтобы мои пользователи возились с оснасткой служб и запускали службу вручную.

Могу ли я написать код, чтобы убедиться, что служба Windows запущена, или запустить ее, если она не запущена?

Редактировать: Конечно, я могу убедиться, что запуск службы установлен автоматически, но он не должен запускаться постоянно, и даже в этом случае приложение внешнего интерфейса все еще должно быть уверенным, что служба работает и запустите ее, если это не так.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2010

Вы можете сделать что-то вроде

    Dim controller As New ServiceController("ServiceNameHere")
    If controller.Status = ServiceControllerStatus.Stopped Then
        controller.Start()
    End If

Не забудьте добавить ссылку и импортировать System.ServiceProcess

2 голосов
/ 10 февраля 2010

Вы можете использовать класс ServiceController для управления сервисом по мере необходимости.

Пример из MSDN, использующего свойство Status для проверки необходимости запуска службы:

' Toggle the Telnet service - 
' If it is started (running, paused, etc), stop the service.
' If it is stopped, start the service.
Dim sc As New ServiceController("Telnet")
Console.WriteLine("The Telnet service status is currently set to {0}", sc.Status)

If sc.Status.Equals(ServiceControllerStatus.Stopped) Or sc.Status.Equals(ServiceControllerStatus.StopPending) Then
   ' Start the service if the current status is stopped.
   Console.WriteLine("Starting the Telnet service...")
   sc.Start()
Else
   ' Stop the service if its status is not set to "Stopped".
   Console.WriteLine("Stopping the Telnet service...")
   sc.Stop()
End If

' Refresh and display the current service status.
sc.Refresh()
Console.WriteLine("The Telnet service status is now set to {0}.", sc.Status)
...