it-swarm.com.de

Wie kann ich überprüfen, ob ein Windows-Dienst ausgeführt wird?

Ich habe eine Anwendung in C # (2.0 unter XP embedded)), die mit einem 'Watchdog' kommuniziert, der als Windows-Dienst implementiert ist Ich möchte anhand meines Codes überprüfen, ob der Dienst ausgeführt wird. Wie kann ich dies erreichen?

167
edosoft

Ich denke so etwas würde funktionieren:

Fügen Sie System.ServiceProcess Zu Ihren Projektreferenzen hinzu (auf der Registerkarte .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";
}

Bearbeiten: Es gibt auch eine Methode sc.WaitforStatus(), die einen gewünschten Status und eine Zeitüberschreitung annimmt, diese aber nie verwendet, aber möglicherweise Ihren Anforderungen entspricht.

Bearbeiten: Sobald Sie den Status erhalten haben, müssen Sie zuerst sc.Refresh() aufrufen, um den Status erneut zu erhalten.

Referenz: ServiceController Objekt in .NET.

334
Carl

Bitte schauen Sie sich das ServiceController Objekt in .NET an.

20
Larry

Hier erhalten Sie alle verfügbaren Dienste und deren Status auf Ihrem lokalen Rechner.

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

Sie können Ihren Dienst mit der Eigenschaft service.name in der Schleife vergleichen und erhalten den Status Ihres Dienstes. Einzelheiten finden Sie unter http://msdn.Microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx also http://msdn.Microsoft.com/ de-de/library/Microsoft.windows.design.servicemanager (v = vs.90) .aspx

12
rhatwar007