![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
![]() Цитата:
Думаю вы НЕ корректируете ClientDataSet внутри потока , а по таймеру записаваете в ClientDataSet результат работы потоков.
Пишу много и развернуто
Последний раз редактировалось Heneken87; 29.12.2016 в 14:46. |
|
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
![]()
В то время как ONDraw грида начинает прорисовку вы ему в нагрузочку еще и данные из его датасета меняете потоками. Верно?
Пишу много и развернуто
|
![]() |
![]() |
![]() |
#13 | |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
![]() Цитата:
Для Draw я написал инструкцию по смене цвета в ячейках, ее я опубликовал чуть выше. Далее я просто меняю текст в ячейках потоками (используя синхронизацию) и соответствующий цвет сам применяется. Происходит ли прорисовка одновременно с обновлением данных с помощью потоков - мне не известно, а разве это возможно, учитывая описанную мной смеху работы?! |
|
![]() |
![]() |
![]() |
#14 | |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
![]() Цитата:
В потоках заполняйте датасет как вам угодно, но не привязывайте его к гриду. На основной форме сделайте таймер и делайте "слепок" вашего датасета , который уже и привяжите к гриду. В функции OnDraw пишите обработчик отключения таймера создания "слепка" на время пока события ONDraw работает. Как только OnDraw отработал,включаем таймер. При таком подходе лаги пройдут и все будет работать как и работало. Пока польхзователья крутит грид,что то смотрит, таймер будет отключен,прорисовка будет идти по последнему слепку.Как только действие польхователя окончено,включаться таймер,данные обновятся.
Пишу много и развернуто
Последний раз редактировалось Heneken87; 29.12.2016 в 15:46. |
|
![]() |
![]() |
![]() |
#15 | |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
![]() Цитата:
Как раз это и происходит. При использовании синхронизации, разумеется! По таймеру у меня запускаются только сами потоки. |
|
![]() |
![]() |
![]() |
#16 | |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#17 |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
![]()
Или отключайте потоки пока работает OnDraw
Пишу много и развернуто
|
![]() |
![]() |
![]() |
#18 | |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
![]() Цитата:
Пишу много и развернуто
Последний раз редактировалось Heneken87; 29.12.2016 в 16:51. |
|
![]() |
![]() |
![]() |
#19 | |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
![]() Цитата:
p/s:Прорисовка занимает больше времени чем выполнение расчетов в памяти. Пока у вас на основной форме работает драв используя выделенную память под Dataset , ваши потоки безсовестно переписывают память заставляя ваш OnDraw рисовать безконца
Пишу много и развернуто
Последний раз редактировалось Heneken87; 29.12.2016 в 17:06. |
|
![]() |
![]() |
![]() |
#20 | |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
![]() Цитата:
Кстати, я пробовал делать обновление ячеек потоками по кнопке. То есть вызов потоков проходил вручную. Чтобы проверить теорию об одновременном использовании таблицы пользователем и обновлением информации. Изначально я вообще не обновлял информацию и все работало быстро. После того, как я пару раз за сутки обновил инфу по кнопке в таблице, начал замечать проблемы. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
неизвестные лаги | Groztik | Windows | 11 | 06.11.2014 23:12 |
Жуткие лаги | ForZe24 | Windows | 12 | 18.11.2013 15:51 |
Сильные лаги компа | stepsav | Свободное общение | 17 | 31.05.2011 01:13 |
Лаги с кирилицей | AIR_3 | Общие вопросы C/C++ | 1 | 05.05.2011 19:57 |
ЛАГИ | Andrey174rus | Операционные системы общие вопросы | 2 | 16.10.2009 12:33 |