Вверх ↑
Ответов: 168
Рейтинг: 7
#1: 2013-04-16 22:34:37 ЛС | профиль | цитата
Леонид прав
система использует системное время по своему усмотрению
и вызывает пользовательские таймера после рассасывания внутрисистемных запросов причем все подряд(если их несколько) никогда раньше и всегда позже
Помочь тут могут 3 вещи

-через inlinecode вызывай TimeBeginPeriod(1) в конце работы таймера
переустанавливая точность определения времени- действует на всю систему!, многие приложения ее сбрасывают/переустанавливают и винда в первую очередь после выполнения точного вызова

- используй точный аудио mmtimer (если не занят), при инициализации укажи точность выполнения вызовов (чем точнее тем более нагружается система) и никогда не ставь 1мс(в точности) оставь системе подышать.

- ну и последний вариант приподними приоритет потока на 1..2 единицы в пределах приоритета процесса вызовом
"fid:=SetThreadPriority(my_handle,my_priority);"
где my_handle наш хендл потока
а my_priority нужный приоритет(0 = THREAD_PRIORITY_NORMAL а 15 = THREAD_PRIORITY_TIME_CRITICAL)


карма: 1

1
Голосовали:Neo