|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.12.2016, 14:43 | #11 | |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
Цитата:
Думаю вы НЕ корректируете ClientDataSet внутри потока , а по таймеру записаваете в ClientDataSet результат работы потоков.
Пишу много и развернуто
Последний раз редактировалось Heneken87; 29.12.2016 в 14:46. |
|
29.12.2016, 14:56 | #12 |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
В то время как ONDraw грида начинает прорисовку вы ему в нагрузочку еще и данные из его датасета меняете потоками. Верно?
Пишу много и развернуто
|
29.12.2016, 15:19 | #13 | |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
Цитата:
Для Draw я написал инструкцию по смене цвета в ячейках, ее я опубликовал чуть выше. Далее я просто меняю текст в ячейках потоками (используя синхронизацию) и соответствующий цвет сам применяется. Происходит ли прорисовка одновременно с обновлением данных с помощью потоков - мне не известно, а разве это возможно, учитывая описанную мной смеху работы?! |
|
29.12.2016, 15:38 | #14 | |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
Цитата:
В потоках заполняйте датасет как вам угодно, но не привязывайте его к гриду. На основной форме сделайте таймер и делайте "слепок" вашего датасета , который уже и привяжите к гриду. В функции OnDraw пишите обработчик отключения таймера создания "слепка" на время пока события ONDraw работает. Как только OnDraw отработал,включаем таймер. При таком подходе лаги пройдут и все будет работать как и работало. Пока польхзователья крутит грид,что то смотрит, таймер будет отключен,прорисовка будет идти по последнему слепку.Как только действие польхователя окончено,включаться таймер,данные обновятся.
Пишу много и развернуто
Последний раз редактировалось Heneken87; 29.12.2016 в 15:46. |
|
29.12.2016, 15:38 | #15 | |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
Цитата:
Как раз это и происходит. При использовании синхронизации, разумеется! По таймеру у меня запускаются только сами потоки. |
|
29.12.2016, 15:45 | #16 | |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
Цитата:
|
|
29.12.2016, 15:50 | #17 |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
Или отключайте потоки пока работает OnDraw
Пишу много и развернуто
|
29.12.2016, 15:51 | #18 | |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
Цитата:
Пишу много и развернуто
Последний раз редактировалось Heneken87; 29.12.2016 в 16:51. |
|
29.12.2016, 16:47 | #19 | |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
Цитата:
p/s:Прорисовка занимает больше времени чем выполнение расчетов в памяти. Пока у вас на основной форме работает драв используя выделенную память под Dataset , ваши потоки безсовестно переписывают память заставляя ваш OnDraw рисовать безконца
Пишу много и развернуто
Последний раз редактировалось Heneken87; 29.12.2016 в 17:06. |
|
29.12.2016, 17:00 | #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 |