Estoy escribiendo complementos de Eclipse, y con frecuencia tengo una situación en la que un trabajo en ejecución necesita detenerse por un momento, ejecutar algo de manera asincrónica en el hilo de la interfaz de usuario y reanudar.¿Cuál es la mejor manera de obtener un valor de retorno de un asyncExec en Eclipse?
Así que mi código por lo general se ve algo como:
Display display = Display.getDefault();
display.syncExec(new Runnable() {
public void run() {
// Do some calculation
// How do I return a value from here?
}
});
// I want to be able to use the calculation result here!
Una forma de hacerlo es tener toda la clase de trabajo tienen algún campo. Otra es usar una clase personalizada (en lugar de anónima para esto y usar su campo de datos resultante, etc. ¿Cuál es el mejor y más elegante enfoque?
Necesita aclarar la frase "ejecutar algo de forma asincrónica en el subproceso de UI" ya que el código de muestra usa display.syncExec, lo que significa que su subproceso se detendrá mientras el código en run() se ejecuta en el subproceso de visualización. – SCdF
El título y el texto de la pregunta dicen 'asyncExec', pero el código de ejemplo tiene' syncExec'. ¡Dos problemas muy diferentes! ¿Cuál es? – Lii