【发布时间】:2010-12-16 10:43:58
【问题描述】:
您好,我正在使用ServiceController 类来启动和停止 Windows 服务,我还可以查询 Status 属性来检测服务是否正在运行。我想在我的应用程序中监视和显示此服务的状态。不幸的是,这似乎只能通过轮询 Status 属性来实现。我宁愿使用一些通知机制。
.NET 中是否有任何事件可以通知我服务状态已更改?
【问题讨论】:
标签: c# events windows-services
您好,我正在使用ServiceController 类来启动和停止 Windows 服务,我还可以查询 Status 属性来检测服务是否正在运行。我想在我的应用程序中监视和显示此服务的状态。不幸的是,这似乎只能通过轮询 Status 属性来实现。我宁愿使用一些通知机制。
.NET 中是否有任何事件可以通知我服务状态已更改?
【问题讨论】:
标签: c# events windows-services
如果您的目标是 Windows Vista 或更高版本,您可以调用 NotifyServiceStatusChange
WMI 将为您轮询服务。检查How can I monitor status changes of windows services under windows xp?
【讨论】:
我不知道,但你可以看看使用 WMI
【讨论】:
除非他们在 .NET 4.0 中添加了某些内容,否则您必须进行轮询。这是我目前正在使用我的项目的方法。我创建了一个类,允许相关方指定要监视的服务。然后启动一个后台线程,每秒监控一次服务状态。如果检测到状态发生变化,则会触发一个事件以通知相关方新旧状态。
【讨论】: