10分間隔でクラスライブラリを呼び出すためのWindowsサービスを作成しました。開始または再起動時に正常に動作します。それはまったく起こっていません。何が欠けているか分かりませんが、正しい方法を特定してください。インターバル時間に基づいてWindowsサービスが開始されない
はここので、あなたのコードは、1日1回実行されます
public partial class Service1 : ServiceBase
{
private Timer _timer;
private DateTime _lastRun = DateTime.Now;
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
log4net.Config.XmlConfigurator.Configure();
_timer = new Timer(10 * 60 * 1000); // every 10 minutes
_timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
Shell Distribute= new Shell();
Distribute.Distribute();
}
protected override void OnStop()
{
this.ExitCode = 0;
base.OnStop();
}
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//if (_lastRun.Date < DateTime.Now.Date)
//{
_timer.Stop();
_lastRun = DateTime.Now;
_timer.Start();
//}
}
}
}
日付の比較が最も原因です。ただし、Timerクラスは、Elapsedイベントを発生させると例外をスワイします。 try/catchを使用してコード内のエラーを診断する必要があります。それをスキップしないでください。例外があれば、例外は非常に診断不能です。 –
@ HansPassant、私もコメントしました。条件文がまだ10分間隔でサービスを実行していない場合 – Usher