1

私の 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() 関数にブレークポイントがあり、ヒットすることを期待していますが、決してヒットしません。

ここに画像の説明を入力

4

1 に答える 1