• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Мультимедийный таймер

  • Автор темы Автор темы chingiz
  • Дата начала Дата начала
C

chingiz

Привет всем. Вопрос собственно не совсем про компоненты, просто не смог подобрать более подходящего раздела. На данный момент я пока знаю три таймера: TTimer - Delphi, системный таймер и мультимедийный таймер, через API Windows. Вот небольшая прога для тестирования.
Посмотреть вложение ProbaTime.zip
Вопрос собственно вот в чем: Мне нужно выполнить некоторую процедуру с периодичностью в 1 милисекунду, из тестовой программы видно, что делфийский и системный таймеры отстают от реального времени уже при значении 10 милисекунд, а таймер мультимедиа вроде бы тикает более менее точно даже при значении 1 милисекунда, но довольно часто вылетает такая и подобные ей ошибки
Посмотреть вложение irror.zip
Меня интересует почему выскакивают ошибки и как от этого избавится?
 
Я программу не смогу поставить, т.к. на работе нет Delphi, но таймер хороший посоветывать могу.
есть "DelphiX" компоненты для создания игр под DirectX, но самое хорошее там DXTimer и DXInput - попробуй!
 
chingiz, проблема заключается в том, что mmTimerProc вызвается не из основного потока, а из потока таймера, асинхронно. Поэтому иногда появляются артефакты в виде чисел, нарисованных где попало на экране, и в виде access violation'ов.
Вообще, произвольно появляющийся глюк обычно указывает на проблемы синхронизации потоков.
Резюме: (частное) не работайте с элементами интерфейса в mmTimerProc; и (общее) синхронизируйте ваши потоки.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab