|
виснет экранная форма
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=58&fpage=8&tid=2036886]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 269ms |
total: | 419ms |
0 / 0 |