私はOnStartメソッドでスレッドを開始するWindowsサービスを持っています。スレッドからWindowsサービスアプリケーションを停止するにはどうすればよいですか?
何かが本当に間違っている場合(処理されない例外など)、基本的にはサービスを停止したいと思っています。
現在、私はServiceBase.Stop()
を使用していますが、ServiceBase
インスタンスをスレッドに表示し、メインプログラムでインスタンスをpublic static
と宣言する必要があります。
サービスを停止する「良い方法」はありますか?もしそうでなければ...そうするのは安全でしょうか?
サービスアカウントがServiceControllerが使用するサービスコントロールマネージャにアクセスすることを想定していることは(すべての場合において)賢明ではないと思います。これは、内部からの良い解決策IMOではなく、外部からプロセスを制御するために使用するものです。 – jlew
非常に良い点。その場合、私はサービスインスタンスをスレッドに渡すことを提案したり、別のポスターを提案してシングルトンにしたりすることをお勧めします。 –