SWT Threading ist mir absolut unverständlich!

Status
Nicht offen für weitere Antworten.
Hallo,
ich hoffe mir kann einer helfen ich bin sowas von verzweifelt. Ich will einen SWT Client bauen der über eine Socket Verbindung Daten erhält. Also habe ich das Ganze auch gebaut. Hat auch alles fuktioniert bis ich Daten aus meinem Verbindungsthread an die GUI übergeben wollte. Geht mit SWT natürlich nicht da bei SWT ein eigenes Süppchen gebraut wird. Also google ich schon seit Stunden. Es wird überall immer nur ein Beispiel wie dieses gezeigt.

Code:
display.syncExec(
  new Runnable() {
    public void run(){
      label.setText(text);
    }
  });

Da ich einen Client baue der die Ganze Zeit auf Daten warten muss habe ich aber eine Endloschleiffe drin. Sobald ich aber eine Endlosschleiffe in die SWT Syntax einbaue, also so:

Code:
display.syncExec(
  new Runnable() {
    public void run(){
      while(true){       
System.out.println("-pingpong");
        }
    }
  });


Läuft sich die Anwendung kaputt(Windows sagt keine Rückmeldung) Also wurde wohl kein Thread erzeugt.

Wie kann ich das sonst machen? Ich bin so verzweifelt.
 

Wildcard

Top Contributor
Da ich einen Client baue der die Ganze Zeit auf Daten warten muss habe ich aber eine Endloschleiffe drin
Schön, aber die Endlosschleife selbst darf natürlich nicht im Runnable stehen. Sonst hättest du dir den seperaten Thread auch gleich sparen können.
 
T

trc

Gast
in swt darfst du auf ui komponenten nur aus dem ui thread zugreifen. display.(a)syncExec ruft die run() methode in dem ui thread auf. schau dir mal die checkWidget() methode in der Widget klasse an.
das ganze könnte in etwa so aussehen:

Code:
Thread someThread = new Thread() {
    public void run() {
        while (true) {
            display.syncExec(new Runnable() {
                public void run() {
                    label.setText("xyz");
                }
            });
        }
    }
};
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben