0

他の子サービス プロセスを監視する親サービスがあります。プロセスの object.Kill() を介して特定の子プロセスを強制終了し、それが完了するのを待つ必要がある場合。次に、これがプロセスの名前をインスタンス名としてイベント ビューアー アプリケーション ログに記録されず、「サービスが正常に停止しました」というメッセージが記録されないことに驚いています。親サービスが子サービス プロセスを再度開始すると、イベント ビューアーのアプリケーション ログに「サービスが正常に開始されました」というエントリが表示されます。

何か案は?

ありがとう!

4

3 に答える 3

3

アプリケーションは、アプリケーション ログ自体にログを記録する必要があります。使用Process.Killは、サービスに停止を要求する適切な方法ではないため、サービスの停止を記録しません (メモリから追い出されたため)。

于 2012-04-10T17:53:35.817 に答える
1

Process.Kill()を使用してサービスを制御する代わりに、ServiceControllerクラスを使用してみてください。例については、こちらの同様の質問を参照してください。EventLogへの書き込みについては、 EventLogおよびWriteEntryメソッドのドキュメントを参照してください。

于 2012-04-10T18:03:12.430 に答える
1

はい、サービスを強制終了するのではなく、サービス コントローラー クラスを使用してサービスを停止または一時停止する必要があります。

using System.ServiceProcess 名前空間を追加する必要があります。

依存関係 (子) を停止しようとしている場合は、以下の me this を使用して、探している依存サービスを取得し、適切な子サービスを停止できます:-

ServiceController sc = new ServiceController("%PARENT_SERVICE%"); ServiceController[] scServices = sc.DependentServices;

        foreach (ServiceController dependant in scServices)
        {
            if (dependant.DisplayName == "%CHILD_SERVICE%")
            {
                dependant.Stop();
                dependant.WaitForStatus(ServiceControllerStatus.Stopped);
            }
        }
于 2012-04-10T18:33:39.660 に答える