|
виснет экранная форма
|
|||
---|---|---|---|
#18+
приложение работает, процессы идут (прием/передача данных устройствам, данные в базу данных пишутся). А вот кнопки на приложении перестают нажиматься, но ... Иногда их отрисовка пропадает, остаются только надписи какой диагноз? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 23:49 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, Диагноз: осуществление тяжёлых операций в основном потоке приложения, мешающее отрисовке и прочему гуёвому функционалу. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 23:54 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
softwarer, процессор при этом грузится на 20-50%. потом приложение может зависнуть... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 00:21 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, Работу с приемом/передачей данных, равно как и многочисленные взаимодействия с БД можно оформить в потоки. Ну а прогресс этих действий уже передавайте в основной поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 00:36 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Можно пойти упрощенным путем, используя Parallel Programming Library (PPL): http://www.proghouse.ru/programming/36-delphi-xe7-ppl ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 00:37 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 приложение работает, процессы идут (прием/передача данных устройствам, данные в базу данных пишутся). А вот кнопки на приложении перестают нажиматься, но ... Иногда их отрисовка пропадает, остаются только надписи какой диагноз? Скорее всего вы говорите о потоках, а не о процессах в понимании ОС. И скорее всего в этих потоках слишком многое обёрнуто в Synchronize. А то что обёрнуто в Synchronize выполняется в главном потоке. Ну а для окончательного диагноза нужно видеть код. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 02:48 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Softologic, так и сделано ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 08:27 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
northener, не использую синхронайз ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 08:27 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Softologic Можно пойти упрощенным путем, используя Parallel Programming Library (PPL): http://www.proghouse.ru/programming/36-delphi-xe7-ppl весьма интересная вещица ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 08:31 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 northener, не использую синхронайз А как сейчас передаете в основную форму инфу? Через Send\PostMessage ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 10:45 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
через глобальные переменные из основной формы ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 17:19 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 через глобальные переменные из основной формы Общение между потоками через глобальные переменные из основной формы? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 22:02 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman Общение между потоками через глобальные переменные из основной формы? между потоком и основной формой-родителем. что такого? да и общение то минимальное. в основном - выдача результата в основную форму ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 22:20 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, Думаю, ошибка всё-таки где-то в твоём секретном коде, который здесь показывать нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 00:12 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 wadman Общение между потоками через глобальные переменные из основной формы? между потоком и основной формой-родителем. что такого? да и общение то минимальное. в основном - выдача результата в основную форму Хотелось бы увидеть пример такой минимальной выдачи результата в основную форму. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 02:39 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 процессор при этом грузится на 20-50%. процессор? одно ядро, что-ль? Разберитесь с загрузкой ядер вашими threads. Если у вас проц 8ядерный, так 50% загрузки процессора означают полную загрузку 4х ядер (4мя threads). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 02:44 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
YuRock Mizer73, Думаю, ошибка всё-таки где-то в твоём секретном коде, который здесь показывать нельзя. +100500 Прием/передачу данных устройствам хотелось бы увидеть. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 03:29 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 через глобальные переменные из основной формы ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 11:55 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
s62 Mizer73 через глобальные переменные из основной формы + 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 12:02 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Softologic, основному потоку это знать незачем. он , просто, пользуется новыми данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 13:28 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 Softologic, основному потоку это знать незачем. он , просто, пользуется новыми данными. Ну если в контексте задачи это норм, то вопросов нет. Однако, это не очень корректно с позиции модели бизнес-логики и паттернов проектирования я считаю. Впрочем, в паттернах я новичок и эти мои измышления субъективны :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 14:31 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 Softologic, основному потоку это знать незачем. он , просто, пользуется новыми данными. Из того, что вы написали в начале: приложение работает, процессы идут (прием/передача данных устройствам, данные в базу данных пишутся). я представляю себе такой процесс: программа или послала запрос устройству, или устройство само прислало данные, эти данные были получены в дополнительном потоке, а потом записаны в глобальные переменные. Если бы дополнительный поток информировал об изменениях, например сообщением, то в обработчике сообщения в основном потоке (в главной форме) можно было бы запустить процедуру отображения новых данных или отправку их в БД. А если основной поток не получает от дополнительного потока информации, что данные изменились, каком образом в основном потоке запускается отображение новых данных и их отправка в БД? По таймеру что ли, или как? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 15:29 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
s62, у меня это делается так: есть буфер. основной поток туда пишет команды, которые должны быть переданы на исполнительное устройство. поток по очереди эти команды забирает и отправляет на устройство. так же в основном потоке, так получилось оптимальнее, принимаются ответы и пишутся в буфер ответов. дополнительный поток получает ответы и меняет состояние логики исполнения процессов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 23:13 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 s62, так же в основном потоке, так получилось оптимальнее, принимаются ответы и пишутся в буфер ответов. Вот это меня смущает. Работа с устройством наверно ведется в синхронном режиме. Отсюда и завис вырастает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 00:53 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Я бы посмотрел в сторону использования "блокирующей очереди". В Delphi например имеется IOmniBlockingCollection в библиотеке OmniThreadLibrary. А там уже есть варианты - использовать несколько коллекций или одну или сколько потоков использовать в коллекциях. А основной поток должен получать событие о необходимости перечитать информацию из буфера. Но то же с каким то ограничением что бы не обновлять экран постоянно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 09:44 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
northener Mizer73 s62, так же в основном потоке, так получилось оптимальнее, принимаются ответы и пишутся в буфер ответов. Вот это меня смущает. Работа с устройством наверно ведется в синхронном режиме. Отсюда и завис вырастает. каким образом? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 16:48 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Если работа производится в вашем цикле, то возможно вас спасет старый добрый Application.ProcessMessages :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 09:33 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
L_argo Если работа производится в вашем цикле, то возможно вас спасет старый добрый Application.ProcessMessages :) Отличный совет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 11:31 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
L_argo Если работа производится в вашем цикле, то возможно вас спасет старый добрый Application.ProcessMessages :) попробовал. не спасает ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 14:24 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 northener пропущено... Вот это меня смущает. Работа с устройством наверно ведется в синхронном режиме. Отсюда и завис вырастает. каким образом? >>>Пока идёт синхронный обмен --- выполняется функция чтения (или записи) в синхронном режиме. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 14:25 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
northener Mizer73 s62, так же в основном потоке, так получилось оптимальнее, принимаются ответы и пишутся в буфер ответов. Вот это меня смущает. Работа с устройством наверно ведется в синхронном режиме. Отсюда и завис вырастает. каким образом? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 14:26 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Переведи обмен с устройством в отдельный поток, и интерфейс тормозить не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 14:34 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73каким образом? Синхронные функции не возвращаются до выполнения операции - не работает цикл выборки сообщений - зависон. Разве это не очевидно?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 14:53 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
rgreat Переведи обмен с устройством в отдельный поток, и интерфейс тормозить не будет. так и сделал. как раз после этого отдельного потока и начались проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 18:37 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Mizer73каким образом? Синхронные функции не возвращаются до выполнения операции - не работает цикл выборки сообщений - зависон. Разве это не очевидно?.. нет, не очевидно. так как синхронно могут происходить разные вещи, в том числе и те, которые не ждут друг от друга результата. у меня, как раз, и есть тот случай, когда нигде и ни что не завязано на ожидание результата. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 18:40 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Есть вещи не ждут результата, это по определению асинхронность. Не надо использовать слова не по назначению, это затрудняет взаимопонимание. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 18:42 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 rgreat Переведи обмен с устройством в отдельный поток, и интерфейс тормозить не будет. так и сделал. как раз после этого отдельного потока и начались проблемы. Значит ты криво написал взаимодействие с этим потоком. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 18:55 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
rgreat Mizer73 пропущено... так и сделал. как раз после этого отдельного потока и начались проблемы. Значит ты криво написал взаимодействие с этим потоком. так нет никакого взаимодействия, кроме общего компонента. и то, из одного компонента ТМемо информация берётся, а в другой ТМемо информация складывается ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 20:07 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
куда копать то? почему "внутрянка" не тормозит, а тормозит экран? ни процессор, ни графика не загружены. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 20:09 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, с ТМемо работа идет напрямую из потока? "код в студию" ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 20:38 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 так нет никакого взаимодействия, кроме общего компонента. и то, из одного компонента ТМемо информация берётся, а в другой ТМемо информация складывается https://lurkmore.to/Взаимоисключающие_параграфы ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 20:40 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
TMemo из потока? Это уже начинает радовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 20:43 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Zelius с ТМемо работа идет напрямую из потока? "код в студию" а что тут странного? вот, обычное обращение... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 23:06 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Vizit0r TMemo из потока? Это уже начинает радовать. не открывается ссылка ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 23:07 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, Мягко говоря, не стоит лезть из потока к визуальным комронентам таким образом. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 01:39 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 Dimitry Sibiryakov пропущено... Синхронные функции не возвращаются до выполнения операции - не работает цикл выборки сообщений - зависон. Разве это не очевидно?.. нет, не очевидно. так как синхронно могут происходить разные вещи, в том числе и те, которые не ждут друг от друга результата. у меня, как раз, и есть тот случай, когда нигде и ни что не завязано на ожидание результата. Вы бы код привели, который в основном потоке получает/читает что-то от внешнего устройства. Тогда бы я или кто-то другой смогли бы вас ткнуть носом в то место, где у вас проблема. А без кода смысла что-то обсуждать нет никакого. А пока только от вас скажем так "странные" заявления типа синхронно могут происходить разные вещи, в том числе и те, которые не ждут друг от друга результата. Как это понимать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 02:37 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
String - сложная штука. Перед указателем лежит размер, после всего - ноль. А когда начинают в такой тип писать/читать из разных потоков.... Ну... Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 08:28 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, три простых правила для начинающего многопоточника: 1. Никаких synchronize 2. Никаких Application.ProcessMessages 3. Никаких обращений к визуальной части из других потоков Самое простое общение между основным и доп.потоком - через сообщения PostMessage. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 09:18 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Первое правило Бойцовского клуба VCL - с ним работает только главный поток! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 10:08 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman Mizer73, три простых правила для начинающего многопоточника: 1. Никаких synchronize 2. Никаких Application.ProcessMessages 3. Никаких обращений к визуальной части из других потоков Самое простое общение между основным и доп.потоком - через сообщения PostMessage. по-быстрому ничего не нашел про postmessage/ а какие еще варианты есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 10:14 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman Самое простое общение между основным и доп.потоком - через сообщения PostMessage. А я бы лучше посоветовал https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Generics.Collections.TThreadedQueue Не зависит от ОС. Да и нет ничего хуже, чем "забить" спамом систему сообщений. Так можно и винду подвесить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 11:16 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Ну или связку обычного TQueue + TCriticalSection. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 11:21 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
rgreat Не зависит от ОС. а чем отличается от обычного потока? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 11:52 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
rgreat Да и нет ничего хуже, чем "забить" спамом систему сообщений. Так можно и винду подвесить. Я эту сказку много лет слышу, но ни разу с таким не сталкивался на практике. Как и с теми, кто тоже с этим сталкивался. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:24 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman, Лично сталкивался. Но не в своем ПО. Давно правда было. Может с тех пор пофиксили. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:25 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 а чем отличается от обычного потока? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:26 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
rgreat Да и нет ничего хуже, чем "забить" спамом систему сообщений. Так можно и винду подвесить. Лимит 10т на поток, дальше будет отлуп. Периодически случается, если обработка тормозит. Ничего страшного, даже на другие потоки процесса не влияет. Но своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от таймера, например) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:27 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
rgreat Лично сталкивался. Но не в своем ПО. 10000 сообщений закинуть и не обработать? Это нужно быть тотальным рукожопом. Но не свое ПО наверняка не имеет названия, либо им нельзя светить? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:30 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Fr0sT-BrutalНо своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от таймера, например) ....и поэтому не может применяться в GUI потоке. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:35 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman, Да я не помню подробностей уже. Давно было. Win2000 и все такое. Винда начинала тупить просто недетски, даже старый таск мэнаджер. При этом загрузка CPU минимальна. Тупило явно там где требуется обработка сообщений, они просто не проходили вовремя. Что за ПО ломало винду сейчас уже и не помню. Помню что причина была найдена в перегрузке системы сообщений ОС. Вроде по системным евентам нашли. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:47 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Fr0sT-BrutalНо своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от таймера, например) ....и поэтому не может применяться в GUI потоке. однако в VCL своя очередь вполне успешно применяется, и этому есть причины, и они всё более актуальны ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:23 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
kealon(Ruslan)однако в VCL своя очередь вполне успешно применяется, и этому есть причины Да. Рукожопость её архитектора, решившего впихнуть невпихуемое и запрячь в одну телегу GUI, консоль и сервисы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:27 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Опосля то оно каждый решение найдёт. Построить архитектуру до появления проблем, которые она должна решать, довольно сложно. А эта архитектура, хоть и с заплатками, выдержала все хаки, которые появились в ОС. Более того, микрософт фактически скопипастила эту архитектуру (I/O Completion Ports). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:35 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Fr0sT-BrutalНо своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от таймера, например) ....и поэтому не может применяться в GUI потоке. Если только совместно, но да, в GUI потоке особо смысла в ней нет - очередь уже есть, выборка тоже, т.е. вся обвязка, которая требуется для заведения виндовой очереди в фоновых потоках, уже готова. Даже case MsgRec.message и прочие апишные кишки не нужно делать - спасибо механизму procedure MsgFoo(var msg: TFooMsg); message MSG_FOO; ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:57 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman 10000 сообщений закинуть и не обработать? Это нужно быть тотальным рукожопом. Но не свое ПО наверняка не имеет названия, либо им нельзя светить? У меня бывает, если запрос к базе сурово висит. Тогда механизм очистки не успевает сработать, и лимит исчерпывается. Еще остается странный баг в потоке файловой записи при ||-ном запуске архиватора - 7зип как-то уж очень жестоко тормозит хард, хотя и странно, что прям настолько, чтобы запись одного кб длилась несколько минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:01 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 wadman Mizer73, три простых правила для начинающего многопоточника: 1. Никаких synchronize 2. Никаких Application.ProcessMessages 3. Никаких обращений к визуальной части из других потоков Самое простое общение между основным и доп.потоком - через сообщения PostMessage. по-быстрому ничего не нашел про postmessage/ а какие еще варианты есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 16:55 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 wadman Mizer73, три простых правила для начинающего многопоточника: 1. Никаких synchronize 2. Никаких Application.ProcessMessages 3. Никаких обращений к визуальной части из других потоков Самое простое общение между основным и доп.потоком - через сообщения PostMessage. по-быстрому ничего не нашел про postmessage/ а какие еще варианты есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 17:11 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
YuRock обновлять глобальную переменную через критическую секцию, а в главном потоке - через нее же читать эту переменную по таймеру. Читать-то зачем через критическую секцию? Если читать только для того, чтобы прочитать, не надо себя ограничивать. Вот если читать для того, чтобы по результату обновить, а-ля транзакция, тогда, конечно, да. И заключить в скобки всю транзакцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 17:34 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
shalamyanskyЧитать-то зачем через критическую секцию? Затем, что, судя по соседнему топику, у него там TStringList и надо быть уверенным, что он не исчезнет и не поменяется в процессе чтения. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 17:44 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov у него там TStringList и надо быть уверенным, что он не исчезнет и не поменяется в процессе чтения. А... Ну, если чтение не атомарное, тогда, конечно, да... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 18:34 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov shalamyanskyЧитать-то зачем через критическую секцию? Затем, что, судя по соседнему топику, у него там TStringList и надо быть уверенным, что он не исчезнет и не поменяется в процессе чтения.дык у TStringList (и иже с ними) есть встроенные методы блокирования модификации. а вот если он ещё и сам исчезнуть может, то ой! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 18:46 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Мимопроходящийа вот если он ещё и сам исчезнуть может, то ой! Первый принцип параноидальной многопоточности: исчезнуть может всё, что не прибито гвоздями к полу. И что-то я не помню блокировок в самом TStringList... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 18:55 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal У меня бывает, если запрос к базе сурово висит. Тогда механизм очистки не успевает сработать, и лимит исчерпывается. 10000 сообщений в очереди. Все висят. Этим не хвастаться нужно, а исправлять. Отправлять запросы в другой поток и ждать ответа и между делом работать с очередью. Когда я понимал, что в очереди 100 сообщений висят, то этого было достаточно для понимания, что проблема не в очередях. 10000 сообщений, Карл! Этого мало. :( Тут и своя очередь не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 21:08 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov shalamyanskyЧитать-то зачем через критическую секцию? Затем, что, судя по соседнему топику, у него там TStringList и надо быть уверенным, что он не исчезнет и не поменяется в процессе чтения. TStringList - это попытки разные... уже и этого нет. сделал обмен через структуру Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
один фиг... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 21:48 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Итого... что же все-таки тормозит процесс? Почему внутрянка, прогресс-бар, и иже с ними - все прекрассно работает, а на проц добавляется немного нагрузки и отрисовка окон начинает тормозить капитально. Что на это влияет? Еще никто не высказал мысль, кроме того, что общаться из потока с VCL из основной формы - плохо. Почему плохо, что там не подтирается? Почему открываю окошко, а там видна только рамка контура и буковки с текстовыми полями, а под ним торчит то,Ю что было под ним на форме, и все это накладывается друг на друга, фон окошка не закрашивается. вот главный вопрос. что тормозить начинает? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 21:55 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, правильно вам сказали вы смотрели реализацию Lines у Memo? как вы думаете, быстро идёт запрос к окну в другом потоке? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 22:12 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
shalamyansky YuRock обновлять глобальную переменную через критическую секцию, а в главном потоке - через нее же читать эту переменную по таймеру. Читать-то зачем через критическую секцию? Если читать только для того, чтобы прочитать, не надо себя ограничивать. Вот если читать для того, чтобы по результату обновить, а-ля транзакция, тогда, конечно, да. И заключить в скобки всю транзакцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 22:24 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Mizer73, правильно вам сказали вы смотрели реализацию Lines у Memo? как вы думаете, быстро идёт запрос к окну в другом потоке? очень быстро. у меня в потоке, при отправке и получении данных по сети, идет визуальное отбражение "лампочек" на главной форме. все мигает на ура. гигантские объёмы информации обмена с базой данных в онлайне - ничего не висит. еще обмен данными с принтерами... и т.д. - ничего не висит. все зависание начинается с отрисовки окошек... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 22:37 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman Тут и своя очередь не поможет. Причем все происходит, как говориться, in-house, а не где-то в черном ящике системы, за пределами процесса. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 22:42 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 не висит. все зависание начинается с отрисовки окошек... тогда и смотрите отрисовку окошек, может у вас GDI объекты не удаляются? (в диспетчере задач можно посмотреть использование GDI-объектов) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 00:03 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman 10000 сообщений в очереди. Все висят. Этим не хвастаться нужно, а исправлять. Отправлять запросы в другой поток и ждать ответа и между делом работать с очередью. Когда я понимал, что в очереди 100 сообщений висят, то этого было достаточно для понимания, что проблема не в очередях. 10000 сообщений, Карл! Этого мало. :( Тут и своя очередь не поможет. Если выборка медленней добавления - раскидывать смысла нет, по крайней мере, в моём случае это лишь сильно усложнит процесс. Вообще можно блокировать добавление по достижению лимита, но ситуация с переполнением нештатная, и делать ей отдельную обработку не особо нужно. Но уточню - именно в моём случае. Вот чем виндовые очереди неудобны, так это невозможностью итерации. Можно вычерпать определенный диапазон, да, но проверить количество сообщений в ней уже нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 10:57 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, AQTime тральный думаю поможет понять самые узкие места. Или другой профайлер. Иначе никак, гадать можно бесконечно... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 12:26 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
если использовался мемо то вполне возможно автор не знает про beginupdate и endupdate, а без этого добавление строк может превратиться в тот еще тормоз ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 12:38 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Оно в любом случае тормоз, поскольку в EDIT принципе не имеет способа добавить строку. Это делается через получение целого текста, его модификацию и посылку обратно. Поэтому TMemo для лога - один из наихудших вариантов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 12:44 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ну в край то уже не нагоняй, давно не копал, есть в нём добавление правда за 3 вызова оконной функции ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 14:38 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
kealon(Ruslan)есть в нём добавление правда за 3 вызова оконной функции Вот только TMemo.Lines.Add работает именно как SetText(GetText + Str); Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 14:48 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Оно в любом случае тормоз, поскольку в EDIT принципе не имеет способа добавить строку. Это делается через получение целого текста, его модификацию и посылку обратно. Поэтому TMemo для лога - один из наихудших вариантов. я уже давно переписал обмен без TMemo, о чем писал выше. однако - это все ловля блох, не меняющая сути проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 00:20 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Mizer73, правильно вам сказали вы смотрели реализацию Lines у Memo? как вы думаете, быстро идёт запрос к окну в другом потоке? уже нет мемо, а суть не поменялась ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 00:21 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73однако - это все ловля блох, не меняющая сути проблемы. Естественно, исходники-то есть только у тебя и только ты можешь разобраться почему они работают так как работают. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 00:23 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 Dimitry Sibiryakov Оно в любом случае тормоз, поскольку в EDIT принципе не имеет способа добавить строку. Это делается через получение целого текста, его модификацию и посылку обратно. Поэтому TMemo для лога - один из наихудших вариантов. я уже давно переписал обмен без TMemo, о чем писал выше. однако - это все ловля блох, не меняющая сути проблемы. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 00:25 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Mizer73однако - это все ловля блох, не меняющая сути проблемы. Естественно, исходники-то есть только у тебя и только ты можешь разобраться почему они работают так как работают. однако, у меня есть пара процессов в отдельных потоках, которые успешно работают с к компортами - принимают сообщения. оттуда и взял мысль - вынести в отдельный поток обмен данными по сети. скорость обмена- 1-2 сообщения 3-байтовых в секунду. это что, нагрузка? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 00:29 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73это что, нагрузка? Нет, с этим справился бы и компьютер прошлого века, причём не выходя из энергосберегающего режима. Если ЭТО у тебя тормозит, значит что-то у тебя совершенно запредельно криво и никто на этом форуме даже в пьяном бреду не сможет угадать что именно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 00:33 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Mizer73это что, нагрузка? Нет, с этим справился бы и компьютер прошлого века, причём не выходя из энергосберегающего режима. Если ЭТО у тебя тормозит, значит что-то у тебя совершенно запредельно криво и никто на этом форуме даже в пьяном бреду не сможет угадать что именно. а я не говорю о том, что ЭТО тормозит. я спрашиваю, что может так затормаживать экранные элементы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 00:50 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
ну мы так можем долго гадать на кофейной гуще, ответ - "что-то в основном потоке" тебя устроит? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 01:33 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, Так тебе ответили - запредельная? кривизна твоего кода. Имхо, ты взялся за непосильную пока для тебя задачу. Не хватает элементарных знаний по потокам и пользованию профайлером/дебаггером. Другой бы уже давно отпрофилировал и нашёл все бутылочные горлышки, а ты всё сеанс спиритизма на форуме пытаешься устроить ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 01:36 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 я спрашиваю, что может так затормаживать экранные элементы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 02:24 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
2 Mizer73 А вы так и не показали свой код, который в основном потоке принимает/читает данные из СОМ-порта. Вы стесняетесь его показывать или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 02:47 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
northener 2 Mizer73 А вы так и не показали свой код, который в основном потоке принимает/читает данные из СОМ-порта. Вы стесняетесь его показывать или что? Изначально было ясно, что проблема в неконсистенции ее. Ну, так мой шар показывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 03:27 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 а я не говорю о том, что ЭТО тормозит. я спрашиваю, что может так затормаживать экранные элементы. 22389174 - с утечками то всё в порядке, проверили? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 09:31 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
Я извиняюсь, плюсы не очень знаю, но что-то тут полный треш.. При Delete у вас данные уничтожаются, но переменные Count и CountAll не сбрасываются. В итоге это может привести к попытке доступа к несуществующему полю. При Remore у вас уменьшается количество, но кроме того, что затирается Data[y], у вас затирается Data[Count-1]. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 09:49 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Придумал новый термин - "интуитивное программирование". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 10:25 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman Придумал новый термин - "интуитивное программирование". Если бог хочет наказать программиста, он подводит его к интуитивному программированию... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 11:11 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
_avz wadman Придумал новый термин - "интуитивное программирование". Если бог хочет наказать программиста, он подводит его к интуитивному программированию... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 11:51 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Mizer73 не висит. все зависание начинается с отрисовки окошек... тогда и смотрите отрисовку окошек, может у вас GDI объекты не удаляются? (в диспетчере задач можно посмотреть использование GDI-объектов) а чего им удаляться, если форма работает? Новые то не создаются... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 17:32 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
goldmi45 Mizer73 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
Я извиняюсь, плюсы не очень знаю, но что-то тут полный треш.. При Delete у вас данные уничтожаются, но переменные Count и CountAll не сбрасываются. В итоге это может привести к попытке доступа к несуществующему полю. При Remore у вас уменьшается количество, но кроме того, что затирается Data[y], у вас затирается Data[Count-1]. если объект удаляется, то при закрытии формы. Какие данные туда будут писаться после? Count всегда больше нуля. максимум, что затрется, это Data[0]. Где тут трешь? можно только count-- перед циклом поставить. я давно пользуюсь такой структурой, и без проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 17:37 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Mizer73 не висит. все зависание начинается с отрисовки окошек... тогда и смотрите отрисовку окошек, может у вас GDI объекты не удаляются? (в диспетчере задач можно посмотреть использование GDI-объектов) не нашел, как смотреть ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 17:40 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 kealon(Ruslan) пропущено... тогда и смотрите отрисовку окошек, может у вас GDI объекты не удаляются? (в диспетчере задач можно посмотреть использование GDI-объектов) не нашел, как смотреть нашел... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 17:42 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 Mizer73 пропущено... не нашел, как смотреть нашел... сейчас, без потоков, крутится 470 объектов. подключу потоки, посмотрю... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 17:47 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
C GDI все нормально, держит среднее значение ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 19:20 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, тогда вариантов не густо, либо профайлер брать, либо методом научного тыка отключать потенциальные места и смотреть результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 21:47 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Оно в любом случае тормоз, поскольку в EDIT принципе не имеет способа добавить строку. Это делается через получение целого текста, его модификацию и посылку обратно. Поэтому TMemo для лога - один из наихудших вариантов. А вот кстати, что вместо TMemo для лога лучше? У меня блин, тоже есть таковые в логах и тоже как то подтормаживают похоже ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 00:05 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
SoftologicА вот кстати, что вместо TMemo для лога лучше? TlistBox. Может, даже в виртуальном режиме из кольцевого буфера. Консоль тоже забавна. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 00:23 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov SoftologicА вот кстати, что вместо TMemo для лога лучше? TlistBox. Может, даже в виртуальном режиме из кольцевого буфера. Консоль тоже забавна. Для лога лучше всего файл. Имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 00:25 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
DarkMaster Для лога лучше всего файл. Имхо. Ну так то да, но иногда в GUI что то выводить то надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 00:40 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov SoftologicА вот кстати, что вместо TMemo для лога лучше? TlistBox. Может, даже в виртуальном режиме из кольцевого буфера. Консоль тоже забавна. Благодарю. А что такое "в виртуальном режиме из кольцевого буфера" (набрал вручную, не скопипастил. из уважения:) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 00:58 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
SoftologicА что такое "в виртуальном режиме из кольцевого буфера" (набрал вручную, не скопипастил. из уважения:) TListBox.Style = lbVirtual https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.StdCtrls.TListBoxStyle Кольцевой буфер это удобная (быстрая) структура для хранения фиксированного количества данных (строк лога). Ну а так-то да, для посмертного анализа нет ничего лучше файла. Хотя уже магабайты не каждый осилит читать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 01:15 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov SoftologicА что такое "в виртуальном режиме из кольцевого буфера" (набрал вручную, не скопипастил. из уважения:) TListBox.Style = lbVirtual https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.StdCtrls.TListBoxStyle Кольцевой буфер это удобная (быстрая) структура для хранения фиксированного количества данных (строк лога). Ну а так-то да, для посмертного анализа нет ничего лучше файла. Хотя уже магабайты не каждый осилит читать. Понято. Принято. Респект! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 01:20 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Mizer73, тогда вариантов не густо, либо профайлер брать, либо методом научного тыка отключать потенциальные места и смотреть результат. Обкладываю исключениями ПОМы.. столкнулся со следующим: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Ошибку "Ассess violation at adress ..." выкатывает под заголовком "обработка 2", т.е., как я понял, не нравится строка if (Ex_Operator->Ardo2DataIn.Count > 0) но, эта структура создается в событии formcreate, а процесс создается позже. и этот аксесс вываливается только при старте. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 23:38 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Хм. Неужели все СИ-шники выдохли или выдохлись? Почему тема продолжается в разделе Delphi? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 01:41 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
northenerНеужели все СИ-шники выдохли или выдохлись? Во-первых, потому что у автора Билдер и его вопросы не про язык. Во-вторых, потому что здесь больше его собратьев по разуму. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 12:30 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 kealon(Ruslan) Mizer73, тогда вариантов не густо, либо профайлер брать, либо методом научного тыка отключать потенциальные места и смотреть результат. Обкладываю исключениями ПОМы.. столкнулся со следующим: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Ошибку "Ассess violation at adress ..." выкатывает под заголовком "обработка 2", т.е., как я понял, не нравится строка if (Ex_Operator->Ardo2DataIn.Count > 0) но, эта структура создается в событии formcreate, а процесс создается позже. и этот аксесс вываливается только при старте. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 12:36 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
YuRock Mizer73 пропущено... Обкладываю исключениями ПОМы.. столкнулся со следующим: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Ошибку "Ассess violation at adress ..." выкатывает под заголовком "обработка 2", т.е., как я понял, не нравится строка if (Ex_Operator->Ardo2DataIn.Count > 0) но, эта структура создается в событии formcreate, а процесс создается позже. и этот аксесс вываливается только при старте. дебагером нет возможности смоделировать ситуацию. Однако, все вернул к прежнему варианту, через TMemo, и нормально заработало. Правда, пришлось пару дней потратить на восстановление. Больше не надо слушать разных умников, с их теориями. теоретики, есть теоретики, и КПД у них - пшик... по практике. больше трогать код не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 00:56 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Не спешите радоваться. AV это очень плохая бяка. Победить её можно только полным выяснением причин из-за чего она хоть раз возникла! Если не выяснили, вы до сих пор в зоне риска, что ваша ракета упадёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 02:53 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 YuRock пропущено... А дебаггер совсем не работает в билдере что-ли? Если нет - логируй каждую строчку кода и пытайся найти ошибку в своей логике. дебагером нет возможности смоделировать ситуацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 10:52 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
YuRock Mizer73 пропущено... дебагером нет возможности смоделировать ситуацию. так не могу найти то место, где это проиходит. на домашнем компьютере все смоделировал - работает на ура. на рабочих запускаю - ползет access violation причем это начинает ползти при включении функционала обмена данными. все эти точки облепил исключениями - ни одно не ловит это место. сейчас пытаюсь настроить madexcrption - пока ничего не выходит. однако, при закрытии проги, иногда выходит таже фигня - access violation. mad выдал табличку структуры данных с пустыми местами и адресами. не могу понять, к какому месту это приложить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 14:48 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
northener Не спешите радоваться. AV это очень плохая бяка. Победить её можно только полным выяснением причин из-за чего она хоть раз возникла! Если не выяснили, вы до сих пор в зоне риска, что ваша ракета упадёт. да не победил ее еще... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 14:49 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73так не могу найти то место, где это проиходит. Это место (его адрес) пишется в сообщении об ошибке с точностью до байта. Откройте для себя пункт меню "Search" - "Find Address...". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 14:57 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Mizer73так не могу найти то место, где это проиходит. Это место (его адрес) пишется в сообщении об ошибке с точностью до байта. Откройте для себя пункт меню "Search" - "Find Address...". спасибо за подсказку. а в чем открыть? в студии нет этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 18:47 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Есть Goto Address . Чтобы этот пункт был активным программа должна быть запущена. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 18:57 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
northener Есть Goto Address . Чтобы этот пункт был активным программа должна быть запущена. а если ошибка выскочила при закрытии программы, и программа закрылась? правда, такое бло 1 раз ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 19:07 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73а если ошибка выскочила при закрытии программы, и программа закрылась? Сугубо всё равно, адреса постоянны для конкретной сборки. Но адрес придётся-таки записать на бумажку прежде чем закрывать сообщение об ошибке. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 19:11 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73при закрытии проги, иногда выходит таже фигня - access violation. mad выдал табличку структуры данных с пустыми местами и адресами. Вероятно, падает одна из секций finalization. Поэтому юнит madExcept должен стоять ПЕРВЫМ в списке USES проекта . Ну, может быть после FastMM... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 19:14 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Mizer73при закрытии проги, иногда выходит таже фигня - access violation. mad выдал табличку структуры данных с пустыми местами и адресами. Вероятно, падает одна из секций finalization. Поэтому юнит madExcept должен стоять ПЕРВЫМ в списке USES проекта . Ну, может быть после FastMM... ну, он наипервейший Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 19:23 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
А, это де ещё и билдер с его проклятием неопределённого порядка инициализации... Тогда используй штатный CodeGuard и не мучайся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 19:29 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov CodeGuard чего то я от него не заметил особой пользы ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 20:00 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
сдается мне, что просто порча памяти происходит... в таком случае прилетать будет из ниоткуда... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 20:03 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Zeliusсдается мне, что просто порча памяти происходит... CodeGuard и это ловит. Просто надо уметь им пользоваться. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 20:05 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov CodeGuard и это ловит. Dimitry Sibiryakov Zeliusсдается мне, что просто порча памяти происходит... CodeGuard и это ловит. Просто надо уметь им пользоваться. не могу понять, куда он сохраняет лог файл ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 20:13 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73не могу понять, куда он сохраняет лог файл https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_CodeGuard CodeGuard also generates an error log named <project_name>.cgl that lists any errors it finds. The error log is located in the same directory as your executable. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 20:34 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Zeliusсдается мне, что просто порча памяти происходит... CodeGuard и это ловит. Просто надо уметь им пользоваться. нашёл файл CLG: Error 00001. 0x100C00 (Thread 0x22AC): это оно? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 20:49 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Mizer73не могу понять, куда он сохраняет лог файл https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_CodeGuard CodeGuard also generates an error log named <project_name>.cgl that lists any errors it finds. The error log is located in the same directory as your executable. точно... методом научного поиска нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 20:50 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 Dimitry Sibiryakov пропущено... CodeGuard и это ловит. Просто надо уметь им пользоваться. нашёл файл CLG: Error 00001. 0x100C00 (Thread 0x22AC): это оно? я, так понимаю, должно быть продолжение после двоеточия. но продолжения нет, и файл проги висит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 20:51 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73файл проги висит. Отличная возможность подключиться к процессу отладчиком и посмотреть где, как и почему. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 23:03 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Mizer73файл проги висит. Отличная возможность подключиться к процессу отладчиком и посмотреть где, как и почему. там всё умирает... в туман уходит... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2021, 23:29 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Будь я на вашем месте, я бы попробовал задействовать Эврику https://www.eurekalog.com/downloads_delphi.php]. Её триал не ограничен функциональностью в течение 30 дней. За 30 дней вы либо найдёте ошибку, либо откажетесь от этого всего. :) Всё-таки эврика наиболее разработанный инструмент для нахождения ошибок в программах. Ну и тем более главный "техподдержец" её в России (и возможно всего СНГ) регулярно читает и отвечает на форуме. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2021, 01:36 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
northener Будь я на вашем месте, я бы попробовал задействовать Эврику https://www.eurekalog.com/downloads_delphi.php]. Её триал не ограничен функциональностью в течение 30 дней. За 30 дней вы либо найдёте ошибку, либо откажетесь от этого всего. :) Всё-таки эврика наиболее разработанный инструмент для нахождения ошибок в программах. Ну и тем более главный "техподдержец" её в России (и возможно всего СНГ) регулярно читает и отвечает на форуме. спасибо за совет ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2021, 20:05 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
CodeGuard, при запуске в режиме отладки, постоянно крутится на одном: Код: pascal 1. 2. 3. 4.
что это? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2021, 22:12 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
нашел причину происходящего. всем спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2021, 13:18 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, нашел - расскажи ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2021, 14:29 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Zelius Mizer73, нашел - расскажи есть у меня функция получения даты/времени с сервера. Запрос. что бы все компьютеры работали по времени сервера. их , этих запросов, было так много, что они накладывались, видимо, друг на друга и гасили друг друга в контексте открыть/закрыть. в отладчике естественно, эта хрень не выявлялась. переделал функционал по-другому и пошло... да, и по поводу замечаний про синхронизацию в потоке через Synchronize Предыдущие ораторы были частично правы, как и архангельский. Synchronize служит для синхронизации процессов, а именно - он синхронизирует обращение из потока к визуальным компонентам VCL. При Synchronize процедура из потока выполняется в основном потоке, а без Synchronize - в отдельном потоке. Как то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 14:54 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, удивительное открытие особенно про процессы ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 16:14 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Mizer73, удивительное открытие особенно про процессы думаю, что это про процессы не является открытием. На форумах прочитал, проверил - так и есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 16:24 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73, kealon(Ruslan) смутила путаница, для него процессы - это процессы Windows, а не бизнес процессы в приложении. Пара уточнений - с помощью Syncrhonize можно не только VCL синхронизировать, но и прочие разделяемые ресурсы, и еще есть TThrerad.Queue, то же что Syncrhonize, только без ожидания ответа... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 17:00 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Zelius с помощью Syncrhonize можно не только VCL синхронизировать, но и прочие разделяемые ресурсы ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 17:16 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Zelius Mizer73, kealon(Ruslan) смутила путаница, для него процессы - это процессы Windows, а не бизнес процессы в приложении. Пара уточнений - с помощью Syncrhonize можно не только VCL синхронизировать, но и прочие разделяемые ресурсы, и еще есть TThrerad.Queue, то же что Syncrhonize, только без ожидания ответа... так я про бизнес процессы и не говорю. Тут же форум по программированию, а не по построению логики процессов в приложении. Хотя у меня там все круто завёрнуто... Работа в онлайн режиме с приборами и устройствами - дело непредсказуемое. Пользователи постоянно какой-нибудь нестандарт придумывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 18:33 |
|
|
start [/forum/topic.php?all=1&fid=58&tid=2036886]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
137ms |
get tp. blocked users: |
2ms |
others: | 270ms |
total: | 498ms |
0 / 0 |