Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
как вызвать ProcessMessages? https://zx.oberon.org/forum/viewtopic.php?f=79&t=425 |
Страница 1 из 2 |
Автор: | budden [ 17 окт 2018, 14:34 ] |
Заголовок сообщения: | как вызвать ProcessMessages? |
В BlackBoxComponentBuilder, чтобы приложение не выглядело временно зависшим. Например, при массовой перекомпиляции. ============================== Ответ вкратце: ProcessMessages - это функция Дельфи, а не WinApi, к-рая запускает новый модальный цикл сообщений. В ББЦБ на данный момент нет аналога этой функции (но, наверное, есть доступ к WinApi). |
Автор: | Zorko [ 19 окт 2018, 01:11 ] |
Заголовок сообщения: | Re: как вызвать ProcessMessages? |
Боюсь, никак. ББ с уровня пользователя однопоточный же. Хотя меню крутится в другом потоке, оно должно работать независимо. |
Автор: | budden [ 19 окт 2018, 10:42 ] |
Заголовок сообщения: | Re: как вызвать ProcessMessages? |
тут пишут, что для него не нужно многопоточности. Оказывается, это - функция из Дельфи и работает она так: Код: "OBERON"
Но подобная функция есть и в tcl/tk и тоже не связана с многопоточностью. Цитата: С помощью этой команды обновляется состояние приложения, поскольку при ее вызове обрабатываются все необработанные события и выполняются все асинхронные вызовы (idle callbacks).
|
Автор: | Zorko [ 19 окт 2018, 12:01 ] |
Заголовок сообщения: | Re: как вызвать ProcessMessages? |
Тогда что, вклинить эту функцию в потроха компилятора, чтобы периодически вызывалась? |
Автор: | Comdiv [ 19 окт 2018, 13:24 ] |
Заголовок сообщения: | Re: как вызвать ProcessMessages? |
Лучше разбить исходный алгоритм на части и выполнять его как фоновую задачу. Например, массовая перекомпиляция хорошо делится по трансляции отдельных модулей. Это лучше, чем вызывать обработчик сообщений среды напрямую. Но второе проще. |
Автор: | Zorko [ 19 окт 2018, 14:31 ] |
Заголовок сообщения: | Re: как вызвать ProcessMessages? |
budden, нужно одеться в улыбчиво-европейский доброжелательный стиль, перетряхнуть свои познания в английском, пойти регнуться на community.blackboxframework.org и вежливо у них попросить добавить эту фичу. В надежде на понимание. Либо плюнуть на всё это и самолично пилить свою сборку BlackBox. |
Автор: | vlad [ 19 окт 2018, 17:29 ] |
Заголовок сообщения: | Re: как вызвать ProcessMessages? |
Zorko писал(а): Тогда что, вклинить эту функцию в потроха компилятора, чтобы периодически вызывалась? Прокрутка цикла сообщений - очень специфическая штука, ее нельзя вставлять куда попало. Если по-нормальному, то перекомпиляция, как и любая другая не-GUI задача, должна делаться в отдельном процессе или потоке с опциональными уведомлениями о прогрессе. |
Автор: | Zorko [ 19 окт 2018, 19:54 ] |
Заголовок сообщения: | Re: как вызвать ProcessMessages? |
vlad, всё это так, если делать канонично в духе тяжёлых Thread'ов винды или fork'ов линукса. А как будет православно, по-оберонски? |
Автор: | vlad [ 19 окт 2018, 21:38 ] |
Заголовок сообщения: | Re: как вызвать ProcessMessages? |
Zorko писал(а): vlad, всё это так, если делать канонично в духе тяжёлых Thread'ов винды или fork'ов линукса. А как будет православно, по-оберонски? Я так понимаю компилятор неотделим от гуйни в ББ (или была какая-то консольная версия)? Так что короткий ответ - по-нормальному никак. На оберонкоре обсуждали подобную проблему и резолюция "гуру" был в духе "бить долгое действо на части и исполнять их в Actions". Что конечно нифига не масштабируется, но "у кого надо работает" (с). |
Автор: | Comdiv [ 19 окт 2018, 22:50 ] |
Заголовок сообщения: | Re: как вызвать ProcessMessages? |
Не масштабируется на что? На ядра процессора? Так в исходном сообщении не об этом. Помнится, budden писал, что рассматривает однопоточность как преимущество. |
Страница 1 из 2 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |