确保从Visual Basic .Net启动Windows服务

时间:2010-02-10 11:35:50

标签: vb.net wcf windows-services

我在Windows服务中托管了一个WCF服务(使用了here讨论过的技术)并且效果很好。我现在正在编写一个需要调用该服务的(VB.Net)前端应用程序,但我不希望我的用户不得不乱用服务管理单元并手动启动服务。

我可以编写一些代码来确保启动Windows服务,或者如果不启动则启动它吗?

编辑当然,我可以确保将服务启动设置为自动,但不需要一直运行,即使这样,前端应用仍然需要确定服务正在运行,如果不是,则启动它。

2 个答案:

答案 0 :(得分:2)

您可以根据需要使用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)

答案 1 :(得分:2)

您可以执行类似

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

请记住添加对System.ServiceProcess的引用并导入它。