web-dev-qa-db-ja.com

Windowsサービスは自動的に停止します

Windowサービスを作成し、ローカルシステムアカウントで自動的に動作するようにしました。サービスが開始すると、このメッセージが表示されて停止します

ローカルコンピューターの[サービス名]サービスが開始してから停止しました。一部のサービスは、別のサービスまたはプログラムによって使用されていない場合、自動的に停止します。

問題と解決策は何ですか?

29
netseng

作業を行うためにOnStartメソッドでスレッドを開始していないか、OnStartメソッド内で例外が発生しています。

例外がスローされると、Windowsイベントログに表示されます。 Windowsイベントログは、どのような場合でも開始するのに適した場所です。

通常、OnStartメソッドは次のようになります。

Thread _thread;

protected override void OnStart(string[] args)
{
    // Comment in to debug
    // Debugger.Break()

    // Do initial setup and initialization
    Setup();

    // Kick off a thread to do work
    _thread = new Thread(new MyClass().MyMethod)
    _thread.Start();

    // Exit this method to indicate the service has started
}
38
Robert Wagner

この特定のエラーメッセージは、サービスの開始済みが、その後何らかの理由ですぐに終了であることを意味します。良いニュースは、サービスが実際に何かを実行しているため、実行可能ファイルがサービスとして適切に設定および実行されていることです。

一度開始すると、何らかの理由で終了します。これがなぜなのかを知る必要があります。いくつかのデバッグを追加して、稼働中および既知の終了ケースを通知します。それでも問題が明らかにならない場合は、いくつかのデバッグを追加して、まだ実行中であり、停止した時点から逆方向に動作することを知らせます。

6
Mat

デバッグ情報を追跡していますか?ほとんどの場合、初期化中に例外がスローされています。すべての例外を追跡し、Debugviewを使用して表示します。

3
Mike_G

同様の問題が発生しましたイベントログがいっぱいだったためで、サービスはそれらに書き込むことができませんでした。そのため、イベントビューアーでメッセージを検索してデバッグすることはできませんでした。 try/catchを入れて、例外をファイルにダンプしました。 7日ごとではなく、必要に応じてログの設定を変更する必要があったため、サービスを開始できました。

もちろん、私にとっての問題の根本は、イベントログをあふれさせるnVidiaドライバーの問題があり、おそらくディスク上で暴行していることですが、それは別の問題です。

3
Ken Goodridge

Local System Accountとしてサービスを実行する必要があるかもしれません。 Srinivas Ganaparthiによるこの投稿 を参照してください。

1
suresh

JBossの起動時に同じ問題が発生したため、Java_HOME変数、それは私のために働いた。 1.6をサポートしていないのはJBossバージョンで、1.5をサポートしていました。

1
Buminda

私の場合、サービスのメソッドが再帰的に呼び出され(終了条件がtrueでないため)、特定の時間後にサービスが停止されました。

0
umesh shukla

私は同様の問題を抱えていましたが、私の場合、プログラムは単にOnStartメソッドでクラッシュしたことが判明しました。見つからなかったファイルを読み取ろうとしましたが、他のプログラムがクラッシュしても同じ結果になると思います。 Windowsフォームアプリケーションの場合、エラーメッセージが表示されますが、ここでは「サービスの開始と停止」だけでした

Windowsサービスの.exeがあるディレクトリからいくつかのファイルを読み取る必要がある場合は、このトピックを確認してください。 Windowsサービスのフルパスの取得

0
RRM