我如何validationWindows服务是否正在运行

我有一个应用程序在C#(运行在XPembedded式2.0),正在与作为Windows服务实施的“看门狗”进行通信。 设备启动时,此服务通常需要一些时间才能启动。 我想从我的代码中检查服务是否正在运行。 我怎样才能做到这一点?

我猜这样的事情会工作:

将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对象。

请看看.NET中的ServiceController对象。

在这里,您可以获得所有可用的服务及其在本地机器中的状态。

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

你可以比较你的服务与service.name属性内循环,你得到你的服务的状态。 有关详细信息,请访问http://msdn.microsoft.com/zh-CN/library/system.serviceprocess.servicecontroller.aspx,也可访问http://msdn.microsoft.com/en-us/library/microsoft.windows.design .servicemanager(v = VS.90)的.aspx