User interface 球拍/gui:睡眠而不冻结gui

User interface 球拍/gui:睡眠而不冻结gui,user-interface,racket,sleep,User Interface,Racket,Sleep,我正在编写单元测试,我想: 开架 等几秒钟 合上框架 以下是我尝试的代码: #lang racket/base (require plot racket/class) (define f (plot3d-frame (surface3d (λ (x y) (* (cos x) (sin y))) -3.0 3.0 -3.0 3.0))) (send f show #true) (sleep 10) (send f show #false) 运行此操作将打开一个空白帧,等待10秒,然后关闭

我正在编写单元测试,我想:

  • 开架
  • 等几秒钟
  • 合上框架
  • 以下是我尝试的代码:

    #lang racket/base
    (require plot racket/class)
    
    (define f
      (plot3d-frame (surface3d (λ (x y) (* (cos x) (sin y))) -3.0 3.0 -3.0 3.0)))
    (send f show #true)
    (sleep 10)
    (send f show #false)
    
    运行此操作将打开一个空白帧,等待10秒,然后关闭该帧。情节从未出现过。我猜这是因为
    sleep
    使整个线程,包括

    有没有一种方法可以让我的代码休眠而不让GUI休眠?

    是的,使用

    #lang racket/base
    (require plot racket/class racket/gui/base)
    
    (define f
      (plot3d-frame (surface3d (λ (x y) (* (cos x) (sin y))) -3.0 3.0 -3.0 3.0)))
    (send f show #true)
    (sleep/yield 10)
    (send f show #false)
    ;; "It works every time!"