3

サービスを停止し、停止が終了したらサービスを再開したいと思います。私はc#を使用しており、次のコードを生成しました。問題は、サービスが開始された場合、サービスを停止しますが、サービスを再開しないことです。次に関数が呼び出されたときにサービスが停止すると、サービスが開始されます。

string strCmdText1, strCmdText2;
strCmdText1 = "NET STOP \"AdmnService\"";
strCmdText2 = "NET START \"AdmnService\"";
System.Diagnostics.Process.Start("CMD.exe", "/C" + strCmdText1);
System.Diagnostics.Process.Start("CMD.exe", "/C" + strCmdText2);

コマンドを1行に連結する方法はありますか?/ Cが何をするのかわかりませんが、2つのコマンドを実行するための他のスイッチがあるかもしれません。

4

3 に答える 3

5

ServiceControllerを使用できます(System.ServiceProcess .Net 4アセンブリ内)。方法を示す簡単なコンソールアプリケーションを次に示します。

        ServiceController controller = new ServiceController("AdmnService");
        controller.Stop();

        controller.WaitForStatus(ServiceControllerStatus.Stopped);
        Console.WriteLine("Service status: " + controller.Status);

        controller.Start();
        Console.WriteLine("Service status: " + controller.Status);
于 2013-02-26T19:40:48.530 に答える
3

ServiceController.Startが自動的に開始します...このクラスの他のメソッドを使用すると、ステータスを確認してサービスを停止できます。

于 2013-02-26T19:38:55.150 に答える
1

ServiceControllerクラスを使用する方が簡単な場合があります。

Statusプロパティを使用すると、サービスのステータスを確認して再開するか、WaitForStatusメソッドを使用して通知を受け取ることができます。

于 2013-02-26T19:39:20.670 に答える