会社が提供する 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 のサンプル アプリであり、複雑にしたくありません。