我有一个 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对象。