|
分類:[C#]
2019/09/02(Mon) 11:49:12 編集(投稿者)
.Net4.5 C# Windows7 32bit
お世話になります。 Windowsサービスについて教えてください。 アプリケーションにてServiceControllerを使ってサービスの開始、停止を制御しています。 とあるサービス(他社作成)の停止において、時々ですが例外エラーが発生し、原因調査をしています。
サービス停止は try { sc.Stop() } catch (InvalidOperationException err) { Log.Write("E", string.Format("サービス停止異常:{0}", err.Message)); Log.Write("E", err.InnerException.Message); } のように実装しており、ログには
**************** サービス停止異常:'172.17.5.104' コンピューターのHogeClientService サービスを停止できません。 そのサービスを開始できませんでした。 ****************
のように記録されました。 1行目はいいのですが、2行目はなぜか「サービス開始失敗」と記録されています。 err.InnerException.Messageは何の情報がでているのでしょうか? ※サービス側プログラム自体が設定したメッセージがでている、ということはないでしょうか?
試験的にCanStopプロパティをfalseにしたサービス(中身は何もしない)を作って登録し、アプリからサービス停止をかけてみた場合のログは以下の内容でした。 **************** サービス停止異常:'127.0.0.1' コンピューターの HogeTest サービスを停止できません。 要求された制御はこのサービスに対して無効です。 **************** これは正常だと思います。
もう1点質問です。 サービス側のOnStop関数ですが、この関数の中でサービス停止をキャンセルすることは可能でしょうか? ※CanStopプロパティはOnStopが呼ばれる以前に判定されると思うのでこれではないように思いますが。
よろしくお願いします。
|