2013-10-10 14 views
8

Windowsサービス内からEnvironment.Exitを呼び出すと、SCMはサービスのonStop()メソッドを呼び出しますか?この動作は予測できませんか?WindowsサービスでEnvironment.Exitを呼び出す

私はこのコードを持つWindowsサービスをいくつか持っています。残念ながら、私はこの動作を取り除くことはできません。しかし、私はonStop()が呼び出されて、そのメソッドに共通の停止コードを入れるのか、Environment.Exitを呼び出すメソッドに入れるのかを判断する必要があります。

+0

が重複する可能性を呼び出すために、次のコードを使用することができます代わりにExit

に呼び出すのでは自分でメソッドを呼び出すことができますか? ](http://stackoverflow.com/questions/554276/can-a-service-written-in-net-self-terminate) – CodeCaster

答えて

11

Enviroment.Exitはサービスでラップされたプロセスを終了します。

したがって、このメソッドを呼び出すと、onStop()メソッドは呼び出されません。

あなたは[サービスは、.NET自己終了で書かれた缶のSCM stop

System.ServiceProcess.ServiceController svc = new System.ServiceProcess.ServiceController("NameOfYourService"); 
svc.Stop(); 
+0

素早くお返事ありがとうございます!! この動作は常に正しいと思われますか? – Cygnus

+0

これはあなたが探しているものです:http://stackoverflow.com/a/554292/1361084 @CodeCasterのコメントにJon Skeetsの回答が掲載されています。 – Ofiris

+0

こんにちは@Ofiris私はちょうどこのスレッドに出くわす。 ServiceControllerクラスを使用して勝利サービス自体のルーチンからwinserviceを停止できますか?または私は私のサービスを停止することができる別のアプリが必要ですか?ご案内ください。ありがとう – Thomas

関連する問題