我的服務將多次運行日常任務。這裏是我的服務代碼:Windows服務中具有不同間隔時間的多個定時器
private DateTime m_scheduleTime;
private List<Task> m_tasksList; // Task includes id and time ("23:00")
protected override void OnStart(string[] args) {
SetSchedule();
}
private void SetSchedule()
{
Timer[] timers = new Timer[m_tasksList.Count];
int iHours = 0; int iMinutes = 0;
for (int i = 0; i < timers.Length; i++)
{
iHours = Int16.Parse(m_tasksList[i].Time.Split(':')[0]);
iMinutes = Int16.Parse(m_tasksList[i].Time.Split(':')[1]);
m_scheduleTime = DateTime.Today.AddDays(1).AddHours(iHours).AddMinutes(iMinutes);
timers[i] = new Timer();
timers[i].Enabled = true;
timers[i].Interval = m_scheduleTime.Subtract(DateTime.Now).TotalSeconds * 1000;
timers[i].Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed);
}
}
protected void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
DoWork(int taskId);
}
上面的代碼沒有經過測試,我從相關的代碼示例構建它。所以我的問題是我不知道我是否在正確的軌道上,如果我是正確的,我不知道哪個計時器觸發_Elapsed事件,以便我可以傳遞相應的參數。更好的解決方案,將不勝感激!
你可以給我一些工作的Windows任務計劃代碼示例? – user1728585