我这样声明计时器列表:
private List<System.Timers.Timer> dio_timers = new List<System.Timers.Timer>();
并在循环中填充计时器列表:
private void DIOTimerControl()
{
for (int i = 0; i < PrinterNumber; i++)
{
dio_timers.Add(new System.Timers.Timer()
{
Interval = Convert.ToDouble(lst_PrinterStruct[i].DIOCountWindow),
AutoReset = false,
});
dio_timers[i].Elapsed += OnTimerOutEvent;
File.AppendAllText("PackingLogTimer.txt", "Timer " + i.ToString() + " Added at: "
+ DateTime.Now.ToLocalTime().ToString() + "; Timer duration: "
+ Convert.ToDouble(lst_PrinterStruct[i].DIOCountWindow).ToString() + "\r\n");
}
}
private void OnTimerOutEvent(object source, ElapsedEventArgs e)
{
int index = dio_timers.IndexOf((System.Timers.Timer)source);
dio_timers[index].Stop();
File.AppendAllText("PackingLogTimer.txt", "Date: "
+ DateTime.Now.ToLocalTime().ToString() + "; Timer "
+ index.ToString() + " stops at: " + e.SignalTime.ToString() + "\r\n");
}
并在另一个功能中启动计时器:
private void TimerStart()
{
for (int i = 0; i < PrinterNumber; i++)
{
dio_timers[i].Start();
File.AppendAllText("PackingLogTimer.txt", "Timer " + i.ToString()
+ " Started at: " + DateTime.Now.ToLocalTime().ToString()
+ "; Timer duration: "
+ Convert.ToDouble(lst_PrinterStruct[i].DIOCountWindow).ToString() + "\r\n");
}
}
计时器结束后,我会在文本文件中看到下一个数据
计时器0添加于:17.04.2019 20:04:13;计时器持续时间:2000
计时器1添加于:17.04.2019 20:04:13;计时器持续时间:2000
计时器2添加于:17.04.2019 20:04:13;计时器持续时间:2000
计时器3添加于:17.04.2019 20:04:13;计时器持续时间:2000
计时器4添加于:17.04.2019 20:04:13;计时器持续时间:2000
计时器5添加于:17.04.2019 20:04:13;计时器持续时间:4000
计时器6添加于:17.04.2019 20:04:13;计时器持续时间:2000
计时器7添加于:17.04.2019 20:04:13;计时器持续时间:2000
计时器8添加于:17.04.2019 20:04:13;计时器持续时间:3000
计时器9添加于:17.04.2019 20:04:13;计时器持续时间:5000
计时器10添加于:17.04.2019 20:04:13;计时器持续时间:4000
计时器11添加于:17.04.2019 20:04:13;计时器持续时间:8000
计时器0开始于:17.04.2019 20:04:13;计时器持续时间:2000
计时器1开始于:17.04.2019 20:04:13;计时器持续时间:2000
计时器2开始于:17.04.2019 20:04:13;计时器持续时间:2000
计时器3开始于:17.04.2019 20:04:13;计时器持续时间:2000
计时器4开始于:17.04.2019 20:04:13;计时器持续时间:2000
计时器5开始于:17.04.2019 20:04:13;计时器持续时间:4000
计时器6开始于:17.04.2019 20:04:13;计时器持续时间:2000
计时器7开始于:17.04.2019 20:04:13;计时器持续时间:2000
计时器8开始于:17.04.2019 20:04:13;计时器持续时间:3000
计时器9开始于:17.04.2019 20:04:13;计时器持续时间:5000
计时器10开始于:17.04.2019 20:04:13;计时器持续时间:4000
计时器11开始于:17.04.2019 20:04:13;计时器持续时间:8000
日期:17.04.2019 20:04:15;计时器7停在:17.04.2019 20:04:15
日期:17.04.2019 20:04:16;计时器8停在:17.04.2019 20:04:16
日期:17.04.2019 20:04:17;计时器10停在:17.04.2019 20:04:17
日期:17.04.2019 20:04:18;计时器9停在:17.04.2019 20:04:18
日期:17.04.2019 20:04:21;计时器11停在:17.04.2019 20:04:21
日期:17.04.2019 20:04:26;计时器6停在:17.04.2019 20:04:26
日期:17.04.2019 20:04:26;计时器4停在:17.04.2019 20:04:26
日期:17.04.2019 20:04:26;计时器3停在:17.04.2019 20:04:26
日期:17.04.2019 20:04:26;计时器2停在:17.04.2019 20:04:26
日期:17.04.2019 20:04:26;计时器1停在:17.04.2019 20:04:26
日期:17.04.2019 20:04:26;计时器0停在:17.04.2019 20:04:26
日期:17.04.2019 20:04:26;计时器5停在:17.04.2019 20:04:26
为什么间隔时间为2秒的计时器大约工作13秒并最后停止?我的错误在哪里?