|
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 3
|
||||||
Выход из обработчика onclick05.05.2013, 12:51. Показов 5687. Ответов 39
Метки нет (Все метки)
Добрый день! У меня есть примерно такой код в С++ builder:
0
|
||||||
| 05.05.2013, 12:51 | |
|
Ответы с готовыми решениями:
39
Создание обработчика события Onclick с дополнительными парметрами Удалить кнопку из ее же обработчика OnClick
|
|
|
||
| 05.05.2013, 17:44 | ||
|
Твою программу по ссылке запустить не могу - требует rtl170.bpl
0
|
||
|
|
|||
| 05.05.2013, 18:13 | |||
|
Поэтому конечно может падать, но это происходит не всегда поэтому не всегда сразу обнаруживается. Интерфейс конечно может кратковременно не отвечать, но это нормально и ожидаемо.. То что делается с применением Lock/Unlock, имеет тот же эффект что делать эти действия в основном потоке, ибо канва разделяемый ресурс и тут никак иначе. Из чего следует как и писал MikeSoft, выигрыша в производительности при этом нет никакого. Единственный смысл уменьшение подвисаний, и возможность чередовать некоторые действия. Так же как с применением ProcessMessages() чередуются действия выполняемые в цикле с обработкой сообщений клавиатуры ( идр ). Кстати можно таким же образом использовать TTimer. Добавлено через 7 минут Возникает вопрос когда же будет выигрыш при использовании потока ? -Выигрыш будет, если будут еще какие нибудь вычисления в потоке, время выполнения которых будет значительно превышать время занимаемое действиями требующими синхронизации.
0
|
|||
|
|
||||||
| 06.05.2013, 16:22 | ||||||
|
0
|
||||||
| 06.05.2013, 16:37 | |
|
Не по теме: Ну вот. А я на такую вкусную тему опоздал. :cry:
0
|
|
|
21 / 22 / 5
Регистрация: 14.02.2013
Сообщений: 243
|
|
| 06.05.2013, 19:04 | |
|
0
|
|
|
|
||||
| 06.05.2013, 19:08 | ||||
|
И я не уверенно правильно говорить что это вообще проблема вне контекста. Все зависит от требований к программе... В данном случае контекст рисования не особо подходит, так как требуется больше "отклика программы" Но к примеру 5 секунд это вполне нормально, если к примеру поток выигрывает 30 минут при расчетах, а 5 сек тратятся на вывод этих данных, почему нет ? Не каждые же 5 секунд пользователь дергает окно программы как будто у него мышка сбесилась. 1 минутная задержка это конечно не хорошо и тут возможно стоит пересмотреть алгоритм и требования к программе. в событии OnPaint. Зачем тут поток если нет выигрыша ? Поток нужен там где можно выиграть, в том числе в том что бы дать больше времени на работу цикла обработки событий. К примеру серверу он совсем не нужен, лучше пусть лог-файл ведет, что бы синхронизация c GUI не давала проигрыш в производительности.
0
|
||||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
|
| 06.05.2013, 19:09 | |
|
0
|
|
|
|
|||||
| 06.05.2013, 20:06 | |||||
|
0
|
|||||
|
|
||||||||
| 06.05.2013, 20:13 | ||||||||
|
Ну я как бы стараюсь хоть как-то поддерживать тему ТС :
Как бы других инструментов нет, да и по сути не нужны, главное правильно распорядится существующими.
0
|
||||||||
|
|
||||
| 06.05.2013, 21:57 | ||||
Просто так получилось, что я всю жизнь занимался консольными программами. GUI'вых программ я написал всего две. И при всём том у меня было стойкое мнение, что замороженный интерфейс - это вовсе не фича, а лень или незнание программиста
0
|
||||
|
|
||
| 06.05.2013, 22:08 | ||
|
Единственно отличие - большее количество и более сложные разделяемые ресурсы.
0
|
||
|
|
||
| 06.05.2013, 22:31 | ||
|
Добавлено через 13 минут Посмотрел твой пример. Это те же самые Lock/Unlock, но в таком простейшем случае всё чётко и железно работает. Правда такая программа уже несколько выходит за рамки типового GUI-приложения (т.к. в ней много динамики). Тем не менее, наконец воочию увидел работающую программу с Lock/Unlock. Вариант от MikeSoft по своей сути отличается несильно, но тем не менее глючит. Как вариант, есть какие-то хитрости и тонкости при работе с этими штуками. В своё время у меня так же не получилось надёжно задействовать Lock/Unlock и я просто забил на них, потому что непонятно было, как искать причину проблемы
0
|
||
|
|
|||
| 06.05.2013, 22:45 | |||
С другой стороны GUI может оповещать пользователя что необходимо ждать: изменением вида курсора, видом окна итп. Так что это вопрос предусмотрено / не предусмотрено. К примеру иногда лучше организовать линейную прозрачную, предсказуемую и стабильно работающую программу нежели городить потоки и получать неизвестно что, ибо потоки это всегда дополнительные сложности. - опять же все определятся требованиями к программе. Добавлено через 8 минут
А синхронизация с блокированием ресурса в Builder внешне выглядит также. как в Qt или boost. Но это лишь один из подходов к реализации синхронизации между потоками, так же можно использовать обмен сообщениями, что иногда куда более выгоднее в плане эффективности.
0
|
|||
|
|
||||||
| 06.05.2013, 22:50 | ||||||
|
Добавлено через 1 минуту
0
|
||||||
|
|
||||
| 06.05.2013, 23:10 | ||||
|
Собственно задача многопоточности получить выигрыш во времени и/или перераспределить нагрузку ( что в глобальном смысле одно и тоже) Ну можно так же выдумать кучу аналогичных примеров для консоли... если порыскать можно найти что-то в разделе boost. А можно на ходу придумать - к примеру загрузчик файлов с сайта идет загрузка, но актуальность файла утрачена, а значит нужно как-то прервать загрузку, при чем не грубо,а корректно с зачисткой файла с диска ... Ибо кому нужны неоплачиваемые затраты труда ? К тому же реализацию многопоточности можно отсрочить до лучших времен, когда логика уже будет хорошо продумана и протестирована.
0
|
||||
|
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 3
|
|
| 20.06.2013, 12:49 [ТС] | |
|
Огромное спасибо всем за помощь, проблема решилась с помощью ProcessMessages, а с многопотоковостью мне пока трудновато.
0
|
|
|
Заблокирован
|
||
| 27.03.2015, 17:01 | ||
|
C++ bool bquit; char bkey[256]; // ... bquit = false; while ( !bquit ) { for ( int i = 0; i < 256; i ++ ) bkey[i] = GetAsyncKeyState(i); if ( bkey[VK_ESCAPE] == true ) bquit = true; }
1
|
||
|
Почетный модератор
|
|
| 27.03.2015, 19:15 | |
|
maritux, keepitsimple3, еще раз увижу нечто подобное - пойдете отдыхать надолго.
Тема почищена.
1
|
|
| 27.03.2015, 19:15 | |
|
Помогаю со студенческими работами здесь
40
<input> вызов onclick-обработчика по нажатию enter Программное создание обработчика события OnClick для button Выход из обработчика события Выход из обработчика прерывания Выход из обработчика прерывания Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|