Programm friert ein wegen einem JAVA Prozess?
Hallo ich habe ein Programm gemacht namens: "CMDControl"...
Es geht alles aber das Problem ist, ich habe das so gemacht das man mehrere Sachen mit Wartezeiten dazwischen etc.
Ja das Problem ist aber, daß das Programm währenddessen sozusagen einfriert...
Was mache ich falsch???
PASTEBIN: http://pastebin.com/V4Qjv2xm
1 Antwort
Ich bin gerade unterwegs und kann den Code nicht ausprobieren. Schon so lange her, dass ich Swing benuttz habe (wieso eigentlich Swing?)
Aber wenn die Oberfläche einfriert, dann liegt das wohl einfach daran, dass der Event Dispatch Thread mit irgendwas beschäftigt ist, was er nicht tun sollte. Der Event Dispatch Thread ist der Thread, welcher die Oberfläche zeichnet und auf Events reagiert.
Dieser Thread führt aus, was du in der Action Performed Methode machst. Dort wird irgendwo was verzögert (ich kann mir vorstellen, dass es da ne Eingabe oder sowas gibt, auf die gewartet werden muss?! Hab nur die Streams beim überfliegen gesehen). Wenn der Thread dann also an einer Stelle hängen bleibt, dann friert die Oberfläche ein.
Die Lösung ist: Langanhaltende Aufgaben (wie beispw. Netzwerkzugriff) oder das Warten auf ein Ereignis in einen neuen Thread auszulagern. Gibt ne Klasse, die sich SwingWorker nennt und die du dir vllt mal anschauen kannst oder du startest einfach einen neuen Thread bzw. schreibst den Code so um, dass der Event Dispatch Thread nicht mehr blockiert.
Grüße!
Danke für die schnelle antwort. Ich werde mir diesen:"SwingWorker" mal anschauen und wens nich geht werde ich mal schauen ob ich das nicht irgenwie als neben Task arbeiten lassen kann.
Mit freundlichen Grüßen
Marco MC!