Леонид прав
система использует системное время по своему усмотрению
и вызывает пользовательские таймера после рассасывания внутрисистемных запросов причем все подряд(если их несколько) никогда раньше и всегда позже
Помочь тут могут 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)
Ответов: 168
Рейтинг: 7
|
|||
карма: 1 |
| ||
Голосовали: | Neo |