Hi!

I have a problem with the interplay between the racket GUI main thread
and other threads. My application connects to a socket and creates a
GUI. Some of the GUI events are sent over the socket, and everything is
highly asynchronous -- there are multiple threads and channels between
them for socket i/o. Moreover, GUI elements are also created from the
connection thread based on incoming network data.

The problem is this: If I run my application manually within DrRacket as

(thread
  (lambda ()
    (connect)))

It works fine. All events are triggered in the GUI, data is received,
event responses are sent over the network, etc. However, as a
standalone executable, the application will immediately quit, killing
the above connection thread.

If I launch the application like this

(define (start)
  (void
   (sync
    (thread
     (lambda ()
       (connect))))))

(start)

then the application will launch fine as a standalone executable, but
no GUI events are being processed. GUI elements are displayed, but user
interaction (enter text, mouse-clicks, button press) have no effect.

Basically, I need to wait until the connection thread ends, before the
application should quit, but at the same time the waiting may not
block any processing of GUI events like mouse-clicks.

How can I achieve this?

Best,

Erich

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to