2009-08-26 26 views

Respuesta

14

Utilice Display.asyncExec o Display.syncExec, dependiendo de sus necesidades.

Por ejemplo, otro hilo podría llamar a este método para actualizar de forma segura una etiqueta:

private static void doUpdate(final Display display, final Label target, 
     final String value) { 
    display.asyncExec(new Runnable() { 
     @Override 
     public void run() { 
     if (!target.isDisposed()) { 
      target.setText(value); 
      target.getParent().layout(); 
     } 
     } 
    }); 
    } 
4

Hay un tutorial here.

"SWT hace un punto a prueba de fallas cuando se trata de problemas de subprocesos, por lo que al menos los problemas típicos no pasan desapercibidos hasta la producción. La cuestión es, sin embargo, ¿qué haces si necesitas actualizar una etiqueta de botón//-Duper-super Control en SWT de un subproceso de fondo Bueno, es sorprendentemente similar a la oscilación:?"

// Code in background thread. 
doSomeExpensiveProcessing(); 
Display.getDefault().asyncExec(new Runnable() { 
public void run() { 
    someSwtLabel.setText("Complete!"); 
} 
}); 
0

en realidad se puede acaba de enviar un mensaje al hilo GUI que alguna modificación tiene sido cambiado Esto es más claro si lo ves desde la perspectiva de MVC.

-1

Al crear el hilo separado desde el hilo principal pasar el objeto Gui a la nuevo hilo y puede acceder a todas las propiedades de ese objeto GUI.

+0

El hecho de que el hilo de la GUI tenga una referencia al objeto GUI, no significa que tenga acceso. Solo puede actualizar objetos GUI desde el hilo original. –

Cuestiones relacionadas