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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top