Update der GUI - wie lösen?

Thunderhit

Grünschnabel
Meine GUI wurde in SWT geschrieben und ich habe folgendes Problem:
Solange mein Programm läuft, die GUI also da ist, soll ein Thread die ganze Zeit im Hintergrund laufen, dieser gibt in unregelmäßigen Abständen Strings aus, die ich in der GUI in einem Textfeld anzeigen will. Also der Hintergrundthread läuft die ganze Zeit, daher hab ich gemerkt dass wenn ich den in asyncExec starte, meine GUI unbenutzbar ist, da dort nur das Update gemacht werden soll, aber da der Thread ja die ganze Zeit läuft ist die GUI also festgefroren, nur: Wie kann ich das lösen?
Der Hintergrundthread sollte nie gestoppt werden, daher dachte ich, man könnte es durch Datenströme lösen, aber die Beispiele und Tutorials waren da alle nicht hilfreich... dachte eventuell an ein Event, dass ich dem 2. Thread eine Stringreferenz gebe und wenn diese sich ändert, sollte ein Listener das in der GUI mitbekommen und das Update vollführen, nur habe ich keine Möglichkeit dafür gefunden, jemand ne Idee wie ich das lösen könnte?
 
Code den du asyncExec oder syncExec übergibst wird in die normale Ausführung des SWT Oberflächen Codes integriert. Da du einen Thread übergibst der sicher eine while-Schleife hat ist es klar, dass der Oberflächen Code nicht mehr zum Zuge kommt, da er hinter deinem Code auf dessen Beendigung wartet.

In sync und asyncExec sollte daher immer nur so viel Code stehen wie eben nötig und keine länger brauchenden Schleifen.

Was du brauchst ist ein ganz normaler Thread dem du ein Runnable übergibst und mit start (wichtig!) startest. Wenn du nun auf SWT GUI Element aus diesem Thread heraus zugreifen möchtest benutzt du allein für diesen Zugriff async oder syncExec.
 
Zurück