Como posso verificar se um serviço Windows está em execução
-
05-07-2019 - |
Pergunta
Tenho uma aplicação em C # (2.0 rodando no XP incorporado) que está se comunicando com um 'cão de guarda', que é implementado como um serviço do Windows. Quando o dispositivo é inicializado, este serviço normalmente leva algum tempo para começar. Eu gostaria de verificar, do meu código, se o serviço está sendo executado. Como posso fazer isso?
Solução
Eu acho que algo como isso iria funcionar:
Adicionar System.ServiceProcess
às suas referências de projeto (É na guia .NET).
using System.ServiceProcess;
ServiceController sc = new ServiceController(SERVICENAME);
switch (sc.Status)
{
case ServiceControllerStatus.Running:
return "Running";
case ServiceControllerStatus.Stopped:
return "Stopped";
case ServiceControllerStatus.Paused:
return "Paused";
case ServiceControllerStatus.StopPending:
return "Stopping";
case ServiceControllerStatus.StartPending:
return "Starting";
default:
return "Status Changing";
}
Edit:. Há também um sc.WaitforStatus()
método que leva um estado desejado e um tempo limite, nunca usei, mas pode atender às suas necessidades
Edit:. Depois de obter o status, para obter o status de novo, você vai precisar ligar para sc.Refresh()
primeira
Referência: ServiceController objeto no .NET.
Outras dicas
Por favor, dê uma olhada na ServiceController objeto em .NET.
Aqui você tem todos os serviços disponíveis e seus status na sua máquina local.
ServiceController[] services = ServiceController.GetServices();
foreach(ServiceController service in services)
{
Console.WriteLine(service.ServiceName+"=="+ service.Status);
}
Você pode comparar seu serviço com propriedade service.name dentro de loop e você obter o status do seu serviço. Para mais detalhes ir com o http://msdn.microsoft.com/ en-us / library / system.serviceprocess.servicecontroller.aspx Também http: // MSDN .microsoft.com / en-us / library / microsoft.windows.design.servicemanager (v = vs.90) .aspx