繁体   English   中英

是否有.Net API无需轮询即可检测Windows服务的状态变化?

[英]Is there an .Net API to detect status changes of a windows service without polling?

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

.NET中是否有任何事件可以通知我服务状态已更改?

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

WMI将为您轮询服务。 检查如何在Windows XP下监视Windows服务的状态更改?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM