如何在下面的代码中添加条件以检查服务是否正在运行?
For Each s As ServiceController In ServiceController.GetServices()
If s.ServiceName = "test" Or s.ServiceName = "test1" Or s.ServiceName = "test2" Then
s.Stop()
End If
Next
答案 0 :(得分:0)
您可以使用Service Controller Status属性和Running枚举:
For Each s As ServiceController In ServiceController.GetServices()
If (s.ServiceName = "test" Or s.ServiceName = "test1" Or s.ServiceName = "test2") And (s.Status.Equals(ServiceControllerStatus.Running)) Then
s.Stop()
End If
Next
这有一些缺点,因为它只在运行时返回true,并且服务可以有许多状态。
ContinuePending 已暂停 PausePending 运行 StartPending 停止 StopPending
所以你可能想检查它是否已停止,如果这是假的,那么你可以阻止它。
答案 1 :(得分:0)
您可以检查ServiceController的状态,只有在它运行时才会停止它。您还应该检查可以停止:
For Each s As ServiceController In ServiceController.GetServices()
If s.ServiceName = "test" OrElse
s.ServiceName = "test1" OrElse
s.ServiceName = "test2" Then
If s.CanStop AndAlso s.Status = ServiceControllerStatus.Running Then
s.Stop()
End If
End If
Next
请注意,您应尽可能使用OrElse
和AndAlso
来提高代码效率