【问题标题】:Is there an .Net API to detect status changes of a windows service without polling?是否有 .Net API 无需轮询即可检测 Windows 服务的状态变化?
【发布时间】:2010-12-16 10:43:58
【问题描述】:

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

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

【问题讨论】:

    标签: c# events windows-services


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2015-09-12
          • 1970-01-01
          • 2011-08-09
          • 2015-12-12
          • 1970-01-01
          • 1970-01-01
          • 2018-08-30
          • 2015-08-27
          • 1970-01-01
          相关资源
          最近更新 更多