Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.18;
Скачать: CL | DM;

Вниз

Глючит TChart   Найти похожие ветки 

 
aleks_z ©   (2006-05-11 12:52) [0]

Столкнулся с проблемой - добавляю в цикле (AddXY) 800 значений, они рисуются секунд 5 или даже больше, все программы при этом висят. Может кто сталкивался с таким или может кто подскажет, где собака зарыта?
Может поможет дополнительная информация: данные для добавления получаю по событию из драйвера (DeviceIoControl) в буфер каждые 200мс (для прорисовки точно знаю нужно не больше 16мс). При этом повесил обработчик события OnAfterDraw, в котором рисую на чарте - все рисуется нормально. И еще, когда кликаю мышкой где-нибудь на окне - тоже рисуется быстро. Пробовал вставлять Application.ProcessMessages - как мертвому припарка.


 
DesWind ©   (2006-05-11 14:47) [1]


> При этом повесил обработчик события OnAfterDraw, в котором
> рисую на чарте - все рисуется нормально. И еще, когда кликаю
> мышкой где-нибудь на окне - тоже рисуется быстро. Пробовал
> вставлять Application.ProcessMessages - как мертвому припарка.
>
>

не понял.

А ты померь время различных этапов в твоей программе. Токо недавно накатал программу для просмотра данных TChart-ом, добавляю из таблицы несколько десятков тысяч точек, задержка незаметна.


 
aleks_z ©   (2006-05-11 16:06) [2]

Если не понял, что прорисовывается быстро - то что рисую в OnAfterDraw, серия  с данными тормозит.
Замерял все времена, которые могут на это повлиять, все нормально. Коментирую строку с добавлением в цикле - все быстро. Я вот думаю, может это из-за того, что я жду событие в отдельном потоке и из него же добавляю? Как TChart с многопоточностью, ладит? Кстати, OnAfterDraw рисует в другом потоке...


 
Сергей М. ©   (2006-05-11 16:17) [3]


> Как TChart с многопоточностью, ладит?


Нет, не ладит.
Это визуальный VCL-контрол и обращения к нему (в первую очередь - модифицирующие канву) должны осуществляться в осн.потоке.


> Кстати, OnAfterDraw рисует в другом потоке


Весьма сомнительно


 
aleks_z ©   (2006-05-12 11:02) [4]

Пытаюсь сделать обращение к контролу в основном потоке, посылая свое сообщение из ожидающего потока. Через SendMessage и PostMessage не получается, сообщение отправляется (смотрел Spy), но обработчик не вызывается. Form.Perform работает, но эффект тот же, что был раньше (тормоза). Как-то можно урегулировать этот вопрос?


 
DesWind ©   (2006-05-12 11:13) [5]

Я бы в дополнительном потоке данные закидывал в буфер, а потом из основного потока выгребал их оттуда и отрисовывал.


 
Сергей М. ©   (2006-05-12 12:38) [6]


> сообщение отправляется (смотрел Spy), но обработчик не вызывается


Чем в этот момент занят осн.поток ?



Страницы: 1 вся ветка

Текущий архив: 2006.06.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.058 c
11-1127963931
dvk
2005-09-29 07:18
2006.06.18
KOL+MCK 2.13/ Проблемы с установкой


2-1148964290
syte_ser78
2006-05-30 08:44
2006.06.18
суммирование времени


1-1147253284
Dimich1978
2006-05-10 13:28
2006.06.18
Можно ли перезаписать "работающий" файл?


2-1148982474
paul_k
2006-05-30 13:47
2006.06.18
Наступил на очередные грабли


2-1149092879
цветог
2006-05-31 20:27
2006.06.18
рекурсия