Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 17 июн 2025, 01:33

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: как вызвать ProcessMessages?
СообщениеДобавлено: 17 окт 2018, 14:34 
Не в сети

Сообщения: 350
В BlackBoxComponentBuilder, чтобы приложение не выглядело временно зависшим. Например, при массовой перекомпиляции.

==============================

Ответ вкратце: ProcessMessages - это функция Дельфи, а не WinApi, к-рая запускает новый модальный цикл сообщений. В ББЦБ на данный момент нет аналога этой функции (но, наверное, есть доступ к WinApi).


Последний раз редактировалось budden 22 окт 2018, 10:56, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как вызвать ProcessMessages?
СообщениеДобавлено: 19 окт 2018, 01:11 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Боюсь, никак. ББ с уровня пользователя однопоточный же. Хотя меню крутится в другом потоке, оно должно работать независимо.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как вызвать ProcessMessages?
СообщениеДобавлено: 19 окт 2018, 10:42 
Не в сети

Сообщения: 350
тут пишут, что для него не нужно многопоточности. Оказывается, это - функция из Дельфи и работает она так:
Код: "OBERON"
  1.  
  2. if PeekMessage(msg, hWnd, 0, 0, PM_REMOVE) then begin
  3. TranslateMessage(msg);
  4. DispatchMessage(msg);
  5. end;
  6.  

Но подобная функция есть и в tcl/tk и тоже не связана с многопоточностью.
Цитата:
С помощью этой команды обновляется состояние приложения, поскольку при ее вызове обрабатываются все необработанные события и выполняются все асинхронные вызовы (idle callbacks).


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как вызвать ProcessMessages?
СообщениеДобавлено: 19 окт 2018, 12:01 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Тогда что, вклинить эту функцию в потроха компилятора, чтобы периодически вызывалась?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как вызвать ProcessMessages?
СообщениеДобавлено: 19 окт 2018, 13:24 
Не в сети

Сообщения: 146
Лучше разбить исходный алгоритм на части и выполнять его как фоновую задачу. Например, массовая перекомпиляция хорошо делится по трансляции отдельных модулей. Это лучше, чем вызывать обработчик сообщений среды напрямую. Но второе проще.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как вызвать ProcessMessages?
СообщениеДобавлено: 19 окт 2018, 14:31 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
budden, нужно одеться в улыбчиво-европейский доброжелательный стиль, перетряхнуть свои познания в английском, пойти регнуться на community.blackboxframework.org и вежливо у них попросить добавить эту фичу. В надежде на понимание. Либо плюнуть на всё это и самолично пилить свою сборку BlackBox.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как вызвать ProcessMessages?
СообщениеДобавлено: 19 окт 2018, 17:29 
Не в сети

Сообщения: 108
Zorko писал(а):
Тогда что, вклинить эту функцию в потроха компилятора, чтобы периодически вызывалась?


Прокрутка цикла сообщений - очень специфическая штука, ее нельзя вставлять куда попало. Если по-нормальному, то перекомпиляция, как и любая другая не-GUI задача, должна делаться в отдельном процессе или потоке с опциональными уведомлениями о прогрессе.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как вызвать ProcessMessages?
СообщениеДобавлено: 19 окт 2018, 19:54 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
vlad, всё это так, если делать канонично в духе тяжёлых Thread'ов винды или fork'ов линукса. А как будет православно, по-оберонски?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как вызвать ProcessMessages?
СообщениеДобавлено: 19 окт 2018, 21:38 
Не в сети

Сообщения: 108
Zorko писал(а):
vlad, всё это так, если делать канонично в духе тяжёлых Thread'ов винды или fork'ов линукса. А как будет православно, по-оберонски?


Я так понимаю компилятор неотделим от гуйни в ББ (или была какая-то консольная версия)? Так что короткий ответ - по-нормальному никак. На оберонкоре обсуждали подобную проблему и резолюция "гуру" был в духе "бить долгое действо на части и исполнять их в Actions". Что конечно нифига не масштабируется, но "у кого надо работает" (с).


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как вызвать ProcessMessages?
СообщениеДобавлено: 19 окт 2018, 22:50 
Не в сети

Сообщения: 146
Не масштабируется на что? На ядра процессора? Так в исходном сообщении не об этом. Помнится, budden писал, что рассматривает однопоточность как преимущество.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club