![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема использования таймера из MMSystem [D6, WinXP]
toboom © (2006-11-02 14:58:00)Народы!
Создаю таймер
TimerID[I]:=TimeSetEvent(TimerInterval, 0, @TimeProc1, 0, TIME_PERIODIC);
Внутри обработчика TimeProc1 среди остального делается копирование
Canvas.CopyRect(MRD, FBmp.Canvas, MRS)
из BMP-хи.
Так вот достаточно часто, но не всегда из этой самой BMP-хи копируется
черти что, а не то, что в ней есть.
Т.е. будто иногда в обработчике таймера мы попадаем в какое-то иное адресное пространство или
иной какой глюк происходит.
Может кто сталкивался с подобным и догадывается чего делать?
Заранее благодарен.
toboom (2006-11-02 20:50:00) [1]В смысле в
TimeSetEvent(TimerInterval, 0, @TimeProc1, 0, TIME_PERIODIC)
вместо первого 0 поставил 1 (т.е. разрешил погрешность 1 мсек)
Ketmar (2006-11-02 18:55:00) [2]>[2] toboom(c) 2-Nov-2006, 18:51
>Точность таймера я тоже понизил
ой. научи, а?
toboom (2006-11-02 18:51:00) [3]Спасибо.
Точность таймера я тоже понизил, но,
в принципе, надо корректно всё переписать через критические секции, однако оказалось достаточным сделать Lock обоих используемых Canvas. Ну и разлочить соответсвенно.
@!!!ex (2006-11-02 15:16:00) [4]Возможно виновата многопоточность.
Вроде мультимедийный таймер в отдельном потоке работает.
Поставь время для обработки таймера больше 0.(Кстати, об этом прямо сказано в хелпе, что не стоит ставить 0)