我声明这样的计时器列表:
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 秒并最后停止?我的错误在哪里?