[C#] Windows 서비스가 실행 중인지 확인하는 방법

Windows 서비스로 구현 된 ‘watchdog’과 통신하는 C # (XP Embedded에서 실행중인 2.0) 응용 프로그램이 있습니다. 장치가 부팅되면 일반적으로이 서비스를 시작하는 데 시간이 걸립니다. 서비스가 실행되고 있는지 코드에서 확인하고 싶습니다. 어떻게하면됩니까?



답변

나는 이와 같은 것이 효과가 있다고 생각한다.

System.ServiceProcess프로젝트 참조에 추가 하십시오 (.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";
}

편집 : sc.WaitforStatus()원하는 상태와 시간 초과를 사용하는 방법이 있지만 사용하지는 않았지만 필요에 맞을 수 있습니다.

편집 : 상태를 얻은 후 상태를 다시 얻으려면 sc.Refresh()먼저 전화해야합니다 .

참조 : .NET의 ServiceController 객체.


답변

여기에서는 로컬 컴퓨터에서 사용 가능한 모든 서비스와 상태를 얻을 수 있습니다.

ServiceController[] services = ServiceController.GetServices();
foreach(ServiceController service in services)
{
    Console.WriteLine(service.ServiceName+"=="+ service.Status);
}

루프 내에서 서비스를 service.name 속성과 비교하면 서비스 상태를 얻을 수 있습니다. 자세한 내용은 함께 가야를 들어 http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx
http://msdn.microsoft.com/en-us/library/microsoft.windows.design .servicemanager (v = vs.90) .aspx


답변