如何在我的 win 表单应用中获取事件或回调,以更改 Windows 服务状态
本文关键字:回调 状态 服务 Windows 事件 我的 win 表单 获取 应用 | 更新日期: 2023-09-27 18:36:20
我使用我公司提供的 a sdk 在 .net 4.0 上创建了一个 WinForm 应用程序。在应用程序中,我正在检查作为 sdk 一部分的服务状态(它在我安装 sdk 时运行。我正在使用服务控制器类来检查其状态。像这样的东西。
private string CheckSDKService()
{
ServiceController sc = new ServiceController("MyService");
switch (sc.Status)
{
case ServiceControllerStatus.Running:
return "Running";
case ServiceControllerStatus.Stopped:
return "Stopped";
default:
return "Status Changing";
}
}
现在的问题是我不想继续调用它并定期轮询状态。 有什么方法可以在服务停止时收到某种通知。我已经看过WMI,但不明白如何在WinForm c#应用程序中使用它。还有NotifyServiceStatusChange,但它是c ++,我不想使用P''Invoke或COM。这个应用程序是 sdk 的示例应用程序,我不想使它复杂化。
我做了一些与之前评论非常相似的事情。我写了一个类,其中包含您可以订阅的事件。我在工作线程上运行它,每隔几分钟轮询一次。它完全按照您的方式实现,只是它不会返回,而是触发事件。然后,您可以只听这个类并执行程序需要的任何操作:)