Re: GUI app freezing completely



Karsten Wutzke wrote:
Hello all!

I have an application running where the user can set some look and
feels. On a few, when doing a click on a certain menu item the whole
app freezes completely.

The command behind that menu is executed fully (I debugged it), but
after it returns back into the calling code from the event dispatcher,
the window *freezes completely*. It must have something to do with the
look and feels, some simpler ones don't show the described behavior.

When issuing that command, I can only hear my hard disk doing
something shortly, then everything is frozen. I can't even close the
frame anymore. Repainting is gone.

Does anyone know how to debug something like that?

Karsten

PS: The action performed is simply sending a maybe 15 or 20 byte
string over a socket... there are no exceptions that occurr, no
unexecuted code...

You do know that all interactions with the GUI should be done in the Event Dispatching Thread?
In your case, it seems that this is guaranteed by the fact that the whole process is started by "doing a click on a certain menu item". So your socket code executes (unless specifically otherwise programmed by you) in this GUI painting thread. If this socket write hangs for any reason, the GUI will be frozen.

A possible alternative and maybe better design is to use a second thread to do the socket sending work. Use the javax.swing.SwingWorker<T,V> which makes this transition painless.

Phil
.



Relevant Pages

  • Re: Looking for information on MFC TCP Communication
    ... > Note that to use the MFC socket classes the separate threads must be UI threads, ... > there is rarely a need to use separate threads. ... > objects, and not touching the GUI, there are no "thread issues". ... allocate the buffer, but this may be allocating / deleting alot of ...
    (microsoft.public.vc.mfc)
  • Re: tcp connection in gui: event based
    ... Write a small proc that does the accept and sets the connection to ... Use to register procs that get fired when the socket is ... If you have a full line, send it to the GUI, maybe dispatching via ... after to not block the event loop if its a bit bigger ...
    (comp.lang.tcl)
  • Re: Using too many threads?
    ... - Only the main window thread may update the main window GUI. ... Only the details window thread may update the details GUI. ... Is it safe for multiple threads to be reading/writing the same socket? ... "connection controller" thread per connection: ...
    (comp.os.os2.programmer.misc)
  • Re: Cant display Java gui
    ... and pop up the GUI when it receives one. ... >>and returns the decision to your C program via the socket. ... Thanks, Rogan! ... Please respond to "nntp AT dawes DOT za DOT net" ...
    (comp.lang.java.programmer)
  • Re: Cant display Java gui
    ... Have the GUI listen on a localhost socket for a ... and pop up the GUI when it receives one. ... > It also means that you can properly queue the emails for the operator's ... Thanks, Rogan! ...
    (comp.lang.java.programmer)