是否有.Net API来检测Windows服务的状态更改而不进行轮询?

时间:2010-12-16 10:43:58

标签: c# events windows-services

您好我使用ServiceController类来启动和停止Windows服务,我还可以查询Status属性以检测服务是否正在运行。我想在我的应用程序中监视和显示此服务的状态。不幸的是,这似乎只能通过轮询Status属性来实现。我宁愿使用一些通知机制。

.NET中是否有任何可以通知我服务状态已发生变化的事件?

3 个答案:

答案 0 :(得分:1)

如果您的目标是Windows Vista或更高版本,则可以调用NotifyServiceStatusChange

WMI将为您轮询服务。查看How can I monitor status changes of windows services under windows xp?

答案 1 :(得分:0)

我不知道,但您可以查看使用WMI

http://msdn.microsoft.com/en-us/library/bb404655.aspx

答案 2 :(得分:0)

除非他们在.NET 4.0中添加了某些内容,否则您必须进行投票。这是我目前使用我的项目的方法。我创建了一个类,允许感兴趣的各方指定要监视的服务。然后启动后台线程,每秒监视一次服务状态。如果检测到状态更改,则会触发事件以通知相关方新旧状态。