【问题标题】:How to start a forever loop while keep processing events in Rebol如何在 Rebol 中继续处理事件的同时启动一个永久循环
【发布时间】:2014-07-19 00:21:44
【问题描述】:

我想在我的应用中设置一个需要永久循环的网络服务器。循环中的waits 允许 GUI 继续处理界面事件。

但是如果我启动循环,我就不能退出循环来启动 GUI。

如果我已经在 GUI 中,那么虽然我可以使用按钮让用户启动 Web 服务器,但我想自动执行此操作。

我尝试在 RebGUI 中将 Web 服务器代码附加到一个按钮,然后:

开始:按钮“开始”[ 永远 [ .. 网络服务器代码 ... ] ]

以后开始使用

开始/动作​​/点击开始

但这不起作用。

【问题讨论】:

    标签: user-interface rebol rebol2


    【解决方案1】:

    在网络服务器的永久循环中,您可以在某些情况发生时启动 gui。

    或者,如果您想已经在 GUI 中,请为您的 gui 创建一个循环(包括短暂的等待),并在某些情况发生时启动网络服务器循环。

    例如:

    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
    

    【讨论】:

    • 获得了一些代码来演示它在例如时如何工作。视频?我无法关闭 GUI。
    • 抱歉,这显示了从一个事件处理程序切换到另一个事件处理程序,但没有显示两者同时运行。
    • 这是我为 Rebol3 github.com/gchiu/Rebol3/blob/master/scripts/gui-server.reb 编写的示例,我想我必须编写一个异步 http 服务器。
    • 当 webserver 循环被命中时,webserver 和 gui 应该同时被支持。这就是等待的工作。这个问题被标记为 Rebol 2,我的回答也是。我觉得我已经按照书面形式回答了这个问题,也许这个问题需要改写/重写和一些代码?
    • 您还可以查看 Cheyenne Web Server 的嵌入模式,有一个很好的示例 GUI 与嵌入式 Web 服务器一起使用:cheyenne-server.org
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2023-01-04
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多