Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Мультимедийный таймер
chingiz
Вставить ник
сообщение 18:01:2008, 18:23
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 13
Регистрация: 30:05:2007
Из: Россия г.Кумертау
Пользователь №: 11 121
Специализация: Pascal, Delphi, УП на станки с ЧПУ



Репутация: - 0 +


Привет всем. Вопрос собственно не совсем про компоненты, просто не смог подобрать более подходящего раздела. На данный момент я пока знаю три таймера: TTimer - Delphi, системный таймер и мультимедийный таймер, через API Windows. Вот небольшая прога для тестирования.
Прикрепленный файл  ProbaTime.zip ( 8.17 килобайт ) Кол-во скачиваний: 25

Вопрос собственно вот в чем: Мне нужно выполнить некоторую процедуру с периодичностью в 1 милисекунду, из тестовой программы видно, что делфийский и системный таймеры отстают от реального времени уже при значении 10 милисекунд, а таймер мультимедиа вроде бы тикает более менее точно даже при значении 1 милисекунда, но довольно часто вылетает такая и подобные ей ошибки
Прикрепленный файл  irror.zip ( 30.96 килобайт ) Кол-во скачиваний: 20

Меня интересует почему выскакивают ошибки и как от этого избавится?
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 2)
gozer
Вставить ник
сообщение 7:05:2008, 03:12
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 32
Регистрация: 26:06:2006
Пользователь №: 5 038
Специализация: администратор



Репутация: - 0 +


Я программу не смогу поставить, т.к. на работе нет Delphi, но таймер хороший посоветывать могу.
есть "DelphiX" компоненты для создания игр под DirectX, но самое хорошее там DXTimer и DXInput - попробуй!
Подняться вверх 
 
Сообщение #2
Yason
Вставить ник
сообщение 7:05:2008, 17:19
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 134
Регистрация: 27:02:2004
Пользователь №: 296



Репутация: - 6 +


chingiz, проблема заключается в том, что mmTimerProc вызвается не из основного потока, а из потока таймера, асинхронно. Поэтому иногда появляются артефакты в виде чисел, нарисованных где попало на экране, и в виде access violation'ов.
Вообще, произвольно появляющийся глюк обычно указывает на проблемы синхронизации потоков.
Резюме: (частное) не работайте с элементами интерфейса в mmTimerProc; и (общее) синхронизируйте ваши потоки.
Подняться вверх 
 
Сообщение #3


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 5:07:2008 - 04:21
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net