Библиотеки: Multi Timer

 

Multi Timer:

Простой класс, который пригодится, когда Вам необходимы несколько таймеров с независимой обработкой и неконфликтующие между собой.

Multi Timer

Автор: Nikolai Semko

 
Версия 1.02 
теперь не нужно создавать экземпляр класса, т.к. он уже создан с именем "timers"
Функции OnTimer также не должно быть в теле программы. 
См. описание.
 

что-то мне шепчет что к методу KillTimer __нельзя__ обращаться из функции-обработчика.

Любимый тут ArrayRemove собъёт цикл опроса массива и получится ошибка "фик поймаешь всемером" :-) 

 
Maxim Kuznetsov:

что-то мне шепчет что к методу KillTimer __нельзя__ обращаться из функции-обработчика.

Любимый тут ArrayRemove собъёт цикл опроса массива и получится ошибка "фик поймаешь всемером" :-) 

Ну конечно преувеличиваете проблему.
Я думал об этом. 
Максимум, что светит, в случае когда одновременно подошло время двух таймеров, стоящих друг за другом в массиве, это то, что второй таймер будет в пропущен в текущем цикле, а сработает в следующем, т.е. через 15,625 милисекунд. 

Впрочем, это тоже не порядок. Доработал в версии 1.03.
Спасибо.

 
Nikolai Semko:

Ну конечно преувеличиваете проблему.
Я думал об этом. 
Максимум, что светит, в случае когда одновременно подошло время двух таймеров, стоящих друг за другом в массиве, это то, что второй таймер будет в пропущен в текущем цикле, а сработает в следующем, т.е. через 15,625 милисекунд. 

Впрочем, это тоже не порядок. Доработал в версии 1.03.
Спасибо.

только не говори, что я придираюсь :-)

если выставить таймер в 100 msc, и уйти в торговую операцию на 15 сек (а это нормально, бывает и больше), то таймер потом начнёт щёлкать каждые 15 msc пока не нагонит. 

фича конечно, только странная. Например для опросов по таймеру даже вредная. 

 
Maxim Kuznetsov:

только не говори, что я придираюсь :-) 

если выставить таймер в 100 msc, и уйти в торговую операцию на 15 сек (а это нормально, бывает и больше), то таймер потом начнёт щёлкать каждые 15 msc пока не нагонит. 

фича конечно, только странная. Например для опросов по таймеру даже вредная. 

Откуда такая инфа про нагонит?
Ты вообще в курсе, что такое системные прерывания?

А сорри. Понял мысль. Исправлю.
Да, логичнее не догонять, а пропускать в случае непредвиденных обстоятельств.
И возможно в структуру таймера лучше добавить количество пропусков для контроля нестабильной работы.
Спасибо за замечание.

 
Версия 1.04
Добавлена функция, с помощью которой можно получить количество пропущенных событий таймера для контроля стабильности работы:
   int GetLost(int milliseconds, TFunc fun);    // Получаем количество пропущенных событий таймера для контроля стабильности работы.
                                                // Если ноль, то пропусков нет. Если -1, то не найден такой таймер.
 

Версия 1.05
Добавлена функция, с помощью которой можно изменить период одного из конкретных таймеров: 

   void NewPeriod(int old_milliseconds, TFunc fun, int new_milliseconds); // Меняет периодичность данного таймера. Это позволяет создавать таймеры
                                                                          // с динамическим периодом обращения, или автоподстройкой.