0

我使用我公司提供的 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 的示例应用程序,我不想让它复杂化。

4

1 回答 1

1

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

于 2013-10-21T01:07:14.390 回答