Re[3]: Как сделать перерисовку формы максимально быстрой
От: Andrbig  
Дата: 27.04.06 08:06
Оценка:
Здравствуйте, Streamer1, Вы писали:

S>Здравствуйте, Andrbig, Вы писали:


A>>При таком раскладе не надо никому ничего сообщать. Заведи таймер, срабатывающий так часто, как тебе надо. Таймер возьмет последние данные от рабочего потока и их отрисует. Все, не надо никаких усложнений.


S>ха


S>я так и делал вначале, поставил таймер на 20 мс и по нему делал Invalidate, но

S>по какимто причинам таймер срабатывает не раз в 20 мс, а как ему вздумается -
S>то раз в 3 секунды, то раз в секунду, короче обновление получается в среднем
S>раз в несколько секунд. В чем дело не знаю... поэтому стал делать Invalidate из
S>потока отрисовки, но это стало заметно тормозить поток отрисовки, а его тормозить нельзя

ха

Сравни то что ты делал с тем что я предложил. Ты каждые 20мс бросал invalidate, а отрисовка видимо шла дольше 20 мс — в результате очередь сообщений забивалась этими Invalidate-ми под завязку. А поскольку таймер — в той же очереди, то неудивительно, что он стал работать с перерывами. Ты сам его и затормозил.

Я же предлагаю делать Paint в таймере, а в OnPaint контрола ничего не делать — все равно таймер работает часто.

Хотя сам бы я делал по другому: я в конце OnPaint запускал бы серверный таймер на 20 мс, который бы бросил Invalidate.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.