2009-09-01 27 views
0

C#サービスを作成しましたが、起動に失敗しました。C#サービスが起動できません

ローカルコンピュータのシステム使用状況監視サービスが開始されて停止しました。一部のサービス>は、パフォーマンスログと警告>サービスなどの作業がなければ自動的に停止します。

私のOnStartオーバーライドは以下の通りです...

/// <summary> 
    /// OnStart(): Put startup code here 
    /// - Start threads, get inital data, etc. 
    /// </summary> 
    protected override void OnStart(string[] args) 
    { 
    base.OnStart(args); 

    broadcaster = new UdpBroadcaster(IP_Address, Port); 
    itm = new IdleTimeMonitor(1 * 1 * 3000, 1000); 
    aam = new ActiveApplicationMonitor(1000); 

    itm.IdleTimeExceeded += new IdleTimeExceededDelegate(itm_IdleTimeExceeded); 
    itm.IdleTimeReset += new IdleTimeResetDelegate(itm_IdleTimeReset); 
    itm.IdleTimeEvaluated += new IdleTimeEvaluatedDelegate(itm_IdleTimeEvaluated); 

    aam.StartedUsingApplication += new StartedUsingApplicationDelegate(aam_StartedUsingApplication); 
    aam.EndedUsingApplication += new EndedUsingApplicationDelegate(aam_EndedUsingApplication); 
    aam.ApplicationEvaluated += new ApplicationEvaluatedDelegate(aam_ApplicationEvaluated); 
    } 

は、私はその関数か何かの終わりに遮断する必要がありますか?なぜ私のサービスは始まりませんか?

答えて

2

サービスが開始されて何らかの理由でクラッシュした場合、アプリケーションログに例外イベントが記録されます。

+0

クラッシュした場合、ログに記録されます。彼らが受け取ったメッセージは、イベントログから来ました。 – Spence

+0

Spot on!私のスレッドのうちの1つがヌル参照例外のために開始に失敗しました:) – Nippysaurus

3

スレッドを開始しましたか?

何かをするスレッドがない場合、アプリケーションは終了します。したがって、オンスタートが完了するとスレッドはありません(UdpBrodacasterでスレッドを実行しない限り)ので、サービスは終了します。

EDIT:ManualResetEventが通知されておらず、スレッドコールがWaitOne()であることを宣言するだけです。その後、OnStop()シグナルでイベント(.Set())を呼び出し、スレッドを起床させて終了し、サービスを終了します。

+0

ええ、私はスレッドを持っています...しかし、彼らは開始に失敗しました。 – Nippysaurus

1

コードをtry-catchブロックのOnStart(string [])に置き、ログファイルに例外を記録します(発生した場合)。私はインスタンスを作成する上で問題があると思う。

関連する問題