Вверх ↑
Пакеты 
HiAsm4
Windows 
Компоненты 
Koнтpoлы - MMTimer

MMTimer
Краткое описание
   Элемент предназначен для генерирования событий через определенный промежуток времени независимо от оконного обработчика
Параметры
  • Resolution - Точность таймера (0 - самая высокая точность)
  • Interval - Интервал (в миллисекундах) между итерациями таймера
  • Enable - True - таймер начинает работать сразу после запуска приложения или сервиса, False - таймер отключен
  • AutoStop - Таймер автоматически отключится через указанное число срабатываний. Если равно 0, то это поле игнорируется и таймер буде работать постоянно. При запуске таймера счетчик устанавливается заново
  • События
  • doTimer - Включение таймера
  • doStop - Выключение таймера
  • doAutoStop - Устанавливает значение св-ва AutoStop
  • Свойства
  • onTimer - Событие происходит всякий раз при очередной итерации таймера (см. Interval)
  • onStop - Событие происходит один раз сразу после остановки таймера
  • Примеры
       Пример демонстрирует сравнение производительности таймеров при одинаковых интервалах.

    
    Add(MainForm,2953706,21,105)
    {
    Width=231
    Height=129
    Caption="Timers"
    }
    Add(Timer,4058809,182,70)
    {
    Interval=1
    link(onTimer,14308985:doNext,[])
    }
    Add(MMTimer,10697638,182,119)
    {
    Interval=1
    link(onTimer,15271490:doNext,[])
    }
    Add(Timer,16268523,182,182)
    {
    link(onTimer,7109610:doEvent1,[])
    }
    Add(Counter,14308985,280,70)
    {
    Max=2000
    }
    Add(Counter,15271490,294,119)
    {
    Max=2000
    }
    Add(Label,4814149,378,182)
    {
    Left=113
    Top=27
    Width=10
    Height=17
    Caption="0"
    }
    Add(Label,4780216,378,231)
    {
    Left=113
    Top=54
    Width=10
    Height=17
    Caption="0"
    }
    Add(Hub,7109610,231,182)
    {
    OutCount=4
    link(onEvent1,16690602:doData,[])
    link(onEvent2,2430780:doData,[(260,195)(260,237)])
    link(onEvent3,14308985:doReset,[(254,202)(254,90)])
    link(onEvent4,15271490:doReset,[(268,209)(268,139)])
    }
    Add(DoData,16690602,280,182)
    {
    link(onEventData,4814149:doText,[])
    link(Data,14308985:Count,[])
    }
    Add(DoData,2430780,294,231)
    {
    link(onEventData,4780216:doText,[])
    link(Data,15271490:Count,[])
    }
    Add(Label,2861881,427,182)
    {
    Left=55
    Top=27
    Width=30
    Height=17
    Caption="Timer"
    }
    Add(Label,15709153,427,231)
    {
    Left=48
    Top=54
    Width=48
    Height=17
    Caption="MMTimer"
    }
    Замечания
       Основное отличие данного элемента от аналогичного ему - Timer - состоит в способе генерации события onTimer. Обычный Timer работает через стандартные оконные сообщения Windows синхронно с основным потоком приложения и не может генерировать события чаще чем каждые 16-20мс. Очевидно так же, что в случае занятости основного процесса сообщения от таймера начнут накапливаться в очереди и будут обработаны програмой в тот момент, когда это станет возможно(т.е. основной процесс вернется в состояние простоя). Элемент MMTimer не использует стандартную очередь сообщений, а полностью построен на потоке (Thread), вследствии чего работает параллельно основному процессу и способен генерировать события onTimer через честные 1мс. Поскольку вся схема, стоящая после onTimer выполняется в отдельном потоке, то для нее характерны все особенности работы, описанные в замечаниях к элементу Thread в разделе Система.

    Обновление элемента: [svn]MMTimer.pas[/svn]
    BB-code статьи для вставки
    Всего комментариев: 0
    (комментарии к статье еще не добавлены)
    Комментарий
    ...