2009-05-20 16 views
5

私は.net 2.0でWindowsサービスを書いています。OnStartメソッド内でサービスを停止する方法はありますか?

何らかの理由でサービスを開始したくない場合は、OnStart()メソッドで何をすればよいですか?基本クラス(ServiceBase)のStop()メソッドを呼び出すことはできますか?私はそれを試み、面白いメモリアクセスの例外を取得しています。 Stop()メソッドを呼び出すには別のスレッドを開始する必要がありますか?

答えて

8

なぜそれをしたいですか?エラーがある場合は、イベントログに記録して例外をスローします。あなたのサービスは開始されず、何か悪いことが起こったことがユーザーに通知されます。

+0

実際に例外をスローすると、サービスは開始されません。 Windowsサービスがこれをすべて処理します。 – Noldorin

+0

サービスを開始したくない理由がたくさんあります。だから、なぜあなたは本当に理由を尋ねるのではなく、むしろ答えが例外をスローすることを示唆しているでしょうか? ServiceBase.ExitCodeを設定するのはどうですか?それはお勧めですか? – Rory

+1

@Rory:サービスの開始に失敗した場合は、すぐに開始および停止することとは異なります。私はうまく始まり、静かに止めることに反対している。 ExitCodeはイベントログに記録されますので、設定することを検討してください。しかし、それは必要ではありません。 –

0

ServiceControllerを使用して停止し、すぐに戻ります。

0

Environment.FailFast()を使用できます。 try-catch-finallyブロックは無視されることに注意してください。

関連する問題