start メソッドでタイマーを作成し、タイマーをトリガーしてすぐに実行する Windows サービスがあります。タイマーは長時間実行されるタスクであるため、services.msc の起動時のサービスがエラーとして検出されます。以下のタイマーは別のスレッドで実行され、サービスはすぐに開始されるはずだと思いましたか?
下の行を削除すると正常に動作しますが、サービスが開始されるとサービスがトリガーされます。
_timer_Elapsed(null, null);
この行を削除すると問題は解決しますが、これが必要です:
protected override void OnStart(string[] args)
{
_timer = new System.Timers.Timer();
_timer.AutoReset = false;
_timer.Interval = (Convert.ToInt32(ConfigurationManager.AppSettings["CheckInterval"]));
_timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
_timer.Enabled = true;
_timer.Start(); // Get the timer to execute immediately
_timer_Elapsed(null, null); // Get the timer to execute immediately
}