|
4067 / 2675 / 587
Регистрация: 11.09.2009
Сообщений: 9,543
|
|
В Caption "(не отвечает), Progress Bar не перерисовывается. Как исправить?26.11.2025, 19:34. Показов 5003. Ответов 102
Метки нет (Все метки)
Старое однопоточное приложение, Delphi 7, исходник есть.
В нём Progress Bar, показывающий процент выполнения вывода по USB. Процесс занимает секунд 20-40. Примерно 50 на 50, примерно посередине времени выполнения процесса, система (Windows 7) замораживает форму, скачком чуть смещает её вправо и вниз на десяток пикселей, в её Caption система добавляет "(не отвечает)", перерисовки Progress Bar естественно нет. Причём программа прекрасно продолжает правильно работать, после завершения функции вывода по USB, форма "размораживается", и программа продолжает дальше работать. Можно ли исправить такое "поведение" каким-нибудь простым "костылём"? Очень уж не хочется всю эту программу переписывать под потоки. Видимо с этим уже пытались бороться, - есть Application.Process_Messages в местах смены значения Progress Bar.
0
|
|
| 26.11.2025, 19:34 | |
|
Ответы с готовыми решениями:
102
Как работает Progress Bar Как связать FTP и progress bar? |
|
|
||
| 21.05.2026, 17:51 | ||
|
Дельфийцы, у вас есть нормальные учебники вообще по теме? Подкиньте этому неофиту ![]() По C# вот шикарное введение у Шилдта было:
0
|
||
|
9 / 11 / 1
Регистрация: 02.07.2021
Сообщений: 304
|
||||||||
| 21.05.2026, 17:56 | ||||||||
|
Если не знаешь Делфи, что здесь делаешь? Задвигай свою теорию шарпистам
0
|
||||||||
|
9 / 11 / 1
Регистрация: 02.07.2021
Сообщений: 304
|
|
| 21.05.2026, 18:42 | |
|
Я тут причем? Алгоритм предложил, в нем все понятно.
Окна тут не причем, про них вообще речи не было. Бред уже начинается.
0
|
|
|
|
||
| 21.05.2026, 18:46 | ||
|
Бред начался с циклов и таймеров в потоке UI, которые всё-всё порешали и потоки не нужны.
0
|
||
|
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
|
|||
| 21.05.2026, 18:49 | |||
|
0
|
|||
|
9 / 11 / 1
Регистрация: 02.07.2021
Сообщений: 304
|
||
| 21.05.2026, 18:51 | ||
|
Порт железный и не отвечает, как его победить потоками ? Никак.
0
|
||
|
2829 / 1686 / 272
Регистрация: 19.02.2010
Сообщений: 4,456
|
||
| 21.05.2026, 18:53 | ||
|
Внутрь (на примеры кода) не смотрел - не дельфист, отмечаю книгу только на основе своего взгляда на детальное оглавление: содержание 4рёх глав
Chapter 7: Getting Started with the Parallel World....234 Technical requirements....235 Processes and threads....235 Multithreading....235 Multitasking....236 When to parallelize code....237 The most common problems....237 Never access the UI from a background thread....238 Simultaneous reading and writing....241 Sharing a variable....243 Hidden behavior....247 Synchronization....249 Critical sections....250 Other locking mechanisms....256 A short note on coding style....262 Shared data with built-in locking....263 Interlocked operations....264 Object life cycle....268 Communication....271 Windows messages....272 Synchronize and Queue....276 Polling....277 Performance....279 Third-party libraries....280 Summary....281 Chapter 8: Working with Parallel Tools....284 Technical requirements....284 TThread....285 Automatic life cycle management....288 Advanced TThread....290 Setting up a communication channel....292 Sending messages from a thread....296 Using TCommThread....298 Implementing a timer....300 Synchronizing with multiple workers....304 WaitForMultipleObjects....306 Condition variables....310 Comparing both approaches....315 Summary....315 Chapter 9: Exploring Parallel Practices....318 Technical requirements....319 Tasks and patterns....319 Variable capturing....320 Tasks....322 Exceptions in tasks....324 Parallelizing a loop....327 Thread pooling....330 Async/Await....332 Join....335 Join/Await....337 Future....342 Parallel for....344 Pipelines....349 Web spider....350 The filter stage....356 The downloader stage....358 The parser stage....359 Summary....362 Chapter 10: More Parallel Patterns....364 Technical requirements....364 Using OmniThreadLibrary....365 Blocking collections....366 Using blocking collections with TThread-based threads....368 Async/Await....371 Join....372 Future....376 Parallel Task....377 Background Worker....381 Initial query....384 Pipeline....389 Creating the pipeline....391 Stages....393 Displaying the result and shutting down....397 Map....398 Timed Task....400 Summary....404
1
|
||
|
9 / 11 / 1
Регистрация: 02.07.2021
Сообщений: 304
|
|
| 21.05.2026, 19:00 | |
|
Завязывай.
Не можешь написать код, значит не можешь. Вывод? Не флуди. По ушам свистел, сам криворуким оказался.
0
|
|
| 21.05.2026, 19:03 | |||||||
0
|
|||||||
|
|
|
| 21.05.2026, 19:10 | |
|
А что тут переливать? Десятки лет с железом по uart, usb-cdc, rs-485, hart работаю, из отдельных потоков, и никаких проблем. UI не виснет, потоки не глючат, данные между ними и UI пересылаются. Я так и не понял, что тут надо побеждать.
0
|
|
|
4067 / 2675 / 587
Регистрация: 11.09.2009
Сообщений: 9,543
|
||
| 21.05.2026, 21:56 [ТС] | ||
![]() Могу и развёрнутым текстом сказать, чтобы труднее было вывернуть: Речь естественно об исходниках кода той части ОС, в которой происходит "заморозка" окна. Речь о том, что без этого не узнать, что именно там происходит. Без этого гадать, что именно надо сделать, можно до бесконечности. Что собственно мы все тут и наблюдаем. Добавлено И вообще. Кто тему-то из древних пучин поднял? Кто-то на пенсию вышел, и искал что-то хоть немного знакомое, про что бы потрындеть?
0
|
||
|
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
|
||
| 22.05.2026, 01:49 | ||
|
0
|
||
|
9 / 11 / 1
Регистрация: 02.07.2021
Сообщений: 304
|
||||||
| 22.05.2026, 10:08 | ||||||
|
Никто и никогда не пишет такие простые проги заумно. Какие в ДОС были потоки? Не было их.
Если с индикацией надо, смотрим буфер СОМ порта приема, если там есть хотя бы 1 байт, значит качать 1 байт. Трафик надо считать и если накопилось более 1%, на прогресс отправить. При передаче не превышать буфер более 64 байт, иначе переполнится. Если буфер чтения пустой более 1 сек по таймеру, значит сигналим, что девайс не отвечает. Что тут может сломаться? В любой момент это прервать можно. Команду наличия данных в буфере порта смотреть в библе, например TComport (CPort.pas) через свойство InputCount (возвращает количество доступных байт).
Зачем именно потоки? Проверок там нет, тогда какой в потоках смысл, все равно туда проверки надо вставлять. Все потому, что работает теория, если нет потоков, значит это плохо и это говнокод. Вот чего напали на автора, нужны потоки! Зачем? Хз, нужны потоки и все, переписывай код. И понеслось. Типичная бредятина на форуме, один брякнул, другой подхватил.
0
|
||||||
|
9 / 11 / 1
Регистрация: 02.07.2021
Сообщений: 304
|
||
| 22.05.2026, 10:22 | ||
|
Или почитай, что такое Делфи, это язык программирования.
0
|
||
|
9 / 11 / 1
Регистрация: 02.07.2021
Сообщений: 304
|
||
| 22.05.2026, 12:26 | ||
|
Емае. Значит ты не в курсе, как к порту подключаться? Как все запущено. Ну хоть сейчас узнал.
Вот как так-то? Чел не знает как писать код на Делфи, сидит в теме Делфи и нарезает понты, что вокруг все говнокодеры?
0
|
||
| 22.05.2026, 20:59 | |||||||
0
|
|||||||
|
2 / 2 / 0
Регистрация: 28.11.2025
Сообщений: 29
|
|
| Вчера, 15:37 | |
|
Чувствую себы виновным за то, что разбудил тему.
как я понимаю, вопрос не по программированию, а философский. Когда люди не имеют единого языка, то им невозможно договориться. Все таки попробую прояснить для не совсем понимающих: ProcessMessages прокручивает очередь всех оконных сообщений, включая клики, движения мыши и тп. В отдельной нити свой цикл - это отдельный процесс. Следует подумать, насколько неэффективно обрабатывать их (тем более многократно в таймере) для прогрессбара, если можно приостановить в нужный момент нить обработки, нарисовать что нужно и продолжить. Взаимодействием займётся ядро системы, там тоже возможны коллизии, но их несравнимо меньше, чем в пользовательском коде (особенно не всегда опытных кодеров). Но, если это не приложение для собственного нечастого пользования, то можно и не использовать ненавистные нити, а просто ждать, сложив руки на животе. Или крутить цикл с ProcessMessages. ИМХО.
0
|
|
| Вчера, 15:37 | |
|
Помогаю со студенческими работами здесь
100
Задание Progress bar Progress bar
progress bar Progress bar квадратиками хочу на XE5 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности
Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано.
. . .
|
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
|
|
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива
Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
|
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так?
Да, всё верно. Я — искусственный интеллект.
Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
|
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает.
В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше.
Перед запуском проверяем. . .
|
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов.
В Main создаём четыре события. . . .
|