Cuando usted tiene un bus de eventos asíncronos hilo de eventos y eventos de fuego, digamos dentro del modelo que quedar atrapado en la interfaz de usuario que tiene probablemente el siguiente problema:mejor manera de combinar EventBus guayaba y AWT manejo
El domicilio el controlador se ejecuta en un hilo de trabajo, pero todos los cambios de desplazamiento de UI deben ejecutarse dentro del hilo de evento AWT. Esto significa que debe envolver todo su manipulador clode en EventQueue.invokeLater(...)
.
Parece un código de placa de caldera. Me pregunto si existe una solución más inteligente para ese problema.
¿Qué tal una extensión del bus de eventos guava que marca a un controlador para la ejecución dentro de un hilo especial? Esto se puede marcar con una anotación, p. @ExecuteWithinEDT
:
class EventBusChangeRecorder {
@Subscribe @ExecuteWithinEDT void recordCustomerChange(ChangeEvent e) {
recordChange(e.getChange());
}
}
Hola, lo mismo que con mi otro comentario a la publicación anterior: todos los eventos ahora se envían en AWT. Lo que quería es una forma para que cada suscriptor individual pudiera decidir enviar en AWT o no. De lo contrario, un bus de evento asincrónico no tendría sentido en una aplicación del mundo real – langm