Я объявляю список таймеров следующим образом:
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 секунд и останавливаются в последнюю очередь?Где моя ошибка?