Как запустить вечный цикл, продолжая обрабатывать события в Rebol

Я хотел бы настроить веб-сервер в своем приложении, для которого требуется вечный цикл. waits в цикле позволяют графическому интерфейсу продолжать обрабатывать события интерфейса.

Но если я запускаю цикл, я не могу выйти из него, чтобы запустить графический интерфейс.

И если я уже нахожусь в графическом интерфейсе, то, хотя я могу использовать кнопку, чтобы заставить пользователя запустить веб-сервер, я хотел бы сделать это автоматически.

Я попытался в RebGUI прикрепить код веб-сервера к кнопке, а затем:

start: кнопка «Пуск» [ навсегда [ .. код веб-сервера ... ] ]

и позже начать использовать

запуск/действие/запуск по щелчку

но это не работает.


person HappySpoon    schedule 19.07.2014    source источник


Ответы (1)


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

Или, если вы хотите уже быть в графическом интерфейсе, создайте цикл для своего графического интерфейса (который включает в себя короткое ожидание) и запустите цикл веб-сервера, когда возникнет какое-либо условие.

E.g:

REBOL [
    purpose: {Demonstrate breaking from one event loop to go to another.}
]

view/new layout [
    origin 0
    h1 400 rate 1 feel [
        engage: func [face act evt] [
            face/text: reform [now/time mode]
            show face
        ]
    ]
] 200x100

mode: "Initial Loop"
started: now
while [now < (started + 00:00:04)] [
    wait 0.1
]

mode: "Final Loop"
wait none
person Brett    schedule 19.07.2014
comment
Получил некоторый код, чтобы продемонстрировать, как это будет работать, например, в. вид ? Я не могу отключить графический интерфейс. - person Graham Chiu; 19.07.2014
comment
Извините, но это показывает переключение с одного обработчика событий на другой, но не показывает их одновременное выполнение. - person Graham Chiu; 19.07.2014
comment
Это пример, который я написал для Rebol3 github.com/gchiu/ Rebol3/blob/master/scripts/gui-server.reb и, думаю, мне нужно написать асинхронный http-сервер. - person Graham Chiu; 19.07.2014
comment
При попадании в цикл веб-сервера должны поддерживаться и веб-сервер, и графический интерфейс - одновременно. Это работа WAIT. Вопрос помечен Rebol 2, мой ответ тоже. Я чувствую, что ответил на вопрос, как написано, возможно, вопрос нуждается в перефразировке/переписывании и некотором коде? - person Brett; 19.07.2014
comment
Вы также можете проверить режим встраивания веб-сервера Cheyenne, есть хороший пример графического интерфейса, работающего со встроенным веб-сервером: cheyenne-server.org - person endo64; 19.07.2014