如何在我的 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 的示例应用程序,我不想使它复杂化。

如何在我的 win 表单应用中获取事件或回调,以更改 Windows 服务状态

我做了一些与之前评论非常相似的事情。我写了一个类,其中包含您可以订阅的事件。我在工作线程上运行它,每隔几分钟轮询一次。它完全按照您的方式实现,只是它不会返回,而是触发事件。然后,您可以只听这个类并执行程序需要的任何操作:)