私の Window Service アプリケーションでは、タイマー関数が呼び出されることはありません。サービスを自分のマシンにデプロイし、別の関数にブレークポイントを設定してサービスを Visual Studio にアタッチしました。OnStart()
私の関数が呼び出されなかった 後。
これが私の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 と catch にイベント ログを追加しました。
この関数は次を呼び出します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);
}
}
はtimer1_tick
呼び出されません。助言がありますか?
2017 年 12 月 9 日更新: イベント ログを確認しました。[Windows ログ] > [アプリケーション] の下に、「サービスが正常に開始されました」というメッセージが表示されます。ただし、try-catch ブロックに追加されたイベント ログは表示されません。何かが足りないかどうかわかりません。
デバッグのために、サービスを Visual Studio にアタッチしました。下の画像では、OnStart()
メソッドが呼び出されています。関数Thread.Sleep(30000)
をスキップしないように、プロセスをデバッガーにアタッチするためのバッファー時間を確保するために、を追加しましたOnStart()
タイマーの開始後、TimerTick() 関数にブレークポイントがあり、ヒットすることを期待していますが、決してヒットしません。