マイウィンドウサービスアプリケーションでは、タイマー機能が呼び出されません。私は自分のマシンにサービスをデプロイし、別の機能でブレークポイントを持つVisual Studioにサービスを添付しました。 OnStart()
の後、私の関数は呼び出されません。C#ウィンドウサービスがタイマー機能を呼び出さない
はここで更新私のOnStart()
機能
protected override void OnStart(string[] args)
{
this.timer = new System.Timers.Timer(50000);
this.timer.AutoReset = true;
this.timer.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Tick);
this.timer.Start();
}
だ2017年9月12日:追加イベントは、tryでログインしてこの関数は、その後timer1_tick()
呼び出す をキャッチ:timer1_tick
が
private void timer1_Tick(object sender, EventArgs e)
{
try
{
EventLog.WriteEntry("Running.."+ e.ToString());
}
catch (Exception ex)
{
EventLog.WriteEntry("Caught Exception "+ex.ToString(), EventLogEntryType.Error);
}
}
と呼ばれることはありません。助言がありますか?
更新12/09/2017:イベントログを確認しました。 Windows Logs> Applicationの下で、サービスが正常に開始されたというメッセージが表示されます。ただし、try-catchブロックに追加されたイベントログは表示されません。私が何かを逃しているかどうかは分かりません
デバッグのためにVisual Studioにサービスを添付しました。下の画像では、OnStart()
メソッドが呼び出されます。私はタイマーが起動した後OnStart()
機能
をスキップ避けるために、デバッガにアタッチ処理をするためにいくつかのバッファ時間を得るように私はちょうど私が期待しTIMERTICK()関数にブレークポイントを持って、Thread.Sleep(30000)
を追加しましたそれがヒットするが、それは決してOnStart
が適切と思わあなたに可能性がすべてと呼ばれている
あなたは十分に待っていましたか?多分愚かな質問かもしれませんが、あなたは決して知らないでしょう:) –
より低い間隔で初期化し、timer1_Tick内にtry \ catchを入れて、例外が発生した場合にログに記録してみてください。 –
@MartinoBordin私は間隔を5秒に減らし、try-catchブロックを追加しましたが、私は電子メールを受け取っていません。 –