1. ホーム
  2. c#

[解決済み] Windowsサービスが動作しているかどうかを確認する方法

2022-04-21 05:35:13

質問

C# (2.0 on XP embedded)のアプリケーションで、Windowsサービスとして実装されている'ウォッチドッグ'と通信するものがあります。デバイスが起動すると、このサービスは通常、開始するのに時間がかかります。私のコードから、サービスが実行されているかどうかを確認したいと思います。どうすれば実現できますか?

どのように解決するのですか?

こんな感じでいいんじゃないでしょうか。

追加 System.ServiceProcess をプロジェクトのリファレンスに追加します (これは .NET タブにあります)。

using System.ServiceProcess;

ServiceController sc = new ServiceController(SERVICENAME);

switch (sc.Status)
{
    case ServiceControllerStatus.Running:
        return "Running";
    case ServiceControllerStatus.Stopped:
        return "Stopped";
    case ServiceControllerStatus.Paused:
        return "Paused";
    case ServiceControllerStatus.StopPending:
        return "Stopping";
    case ServiceControllerStatus.StartPending:
        return "Starting";
    default:
        return "Status Changing";
}

Edit: この他に sc.WaitforStatus() は、希望するステータスとタイムアウトを受け取ります。これは使ったことがありませんが、あなたのニーズに合うかもしれません。

編集:一旦ステータスを取得すると、再びステータスを取得するために sc.Refresh() を先に入力します。

参考にしてください。 ServiceController オブジェクトを作成します。