2011-01-05 7 views

Antwort

2

In SWT können Sie nur über den Anzeigethread auf GUI-Ressourcen zugreifen. Zum Beispiel, wenn Sie den Text in einer org.eclipse.swt.widgets.Text Steuer Einstellung bereits im Display Thread sein muss oder

 

     final Text text = ...; 
     Display.getCurrent().syncExec(new Runnable() { 
      @Override 
      public void run() { 
       text.setText("test"); 
      } 
     }); 
 
+0

Endlich habe ich mein Problem gelöst. Ihre Erklärung half mir, die Lösung für mein Problem zu finden. Während SWT-Anwendungen schreiben, müssen wir darauf achten, nicht auf die UI-Elemente zuzugreifen und sie im Nicht-UI-Thread zu aktualisieren. – VINEEL

4

Es passiert, wenn Sie versuchen, auf ein Schnittstellenelement von einem Thread, der nicht der UI-Thread ist, zu reagieren.

Um einen Code auf dem UI-Thread auszuführen, müssen Sie ein Runnable verwenden und den Display-Thread bitten, es auszuführen. Auf diese Weise:

Display.getDefault().syncExec(new Runnable() { 
    @Override 
    public void run() { 
     // Do your job here 
    } 
}); 

Wie der syncExec Methode javadoc angegeben,

der Faden, der diese Methode aufruft, bis die runnable abgeschlossen ist suspendiert.

Sie können auch die AsyncExec-Methode überprüfen.

+0

Schließlich nennen, ich mein Problem Resolved.Your Erklärung habe mir geholfen, die Lösung herauszufinden zu meinem Problem. – VINEEL

+1

Dann, bitte markieren Sie es als gültige Antwort. –