我有一个C#应用程序(在嵌入式XP上运行2.0),该应用程序与作为Windows服务实现的“看门狗”进行通信。设备启动时,此服务通常需要一些时间才能启动。我想根据我的代码检查服务是否正在运行。我该怎么做?
我想这样的事情会起作用:
添加System.ServiceProcess到项目引用中(位于.NET选项卡上)。
System.ServiceProcess
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.WaitforStatus()
编辑:一旦获得状态,要再次获得状态,您将需要先致电sc.Refresh()。
sc.Refresh()
参考:.NET中的ServiceController对象。