Java Esperar a que un Service termine antes de empezar el siguiente Service
Publicado por elcurioso (3 intervenciones) el 23/03/2019 14:57:32
Estoy usando Java FX. Cuando hago clic en un botón, un servicio comienza, y hace cambios en la GUI, y luego, comienza otro servicio.
Necesito esperar hasta que el primer servicio finalice los cambios de la interfaz gráfica de usuario antes de empezar el siguiente servicio.
El problema, a veces cuando se hace clic en el botón se bloquea la aplicación.
Uso "setOnSucceded", pero aún así la aplicación a veces se bloquea ... el servicio no es demasiado tedioso ... solo un setText en la etiqueta y otros cambios como setDisabled, setOpacity ... no más de 10 cambios. ..
El resumen de mi código:
Tal y como está a veces funciona, pero otras se bloquea la aplicación.
Necesito poder estar seguro de que el primer servicio haya hecho los cambios gráficos y estos los vea el usuario, a partir de ahí que se ejecute el segundo servicio.
Saludos
Necesito esperar hasta que el primer servicio finalice los cambios de la interfaz gráfica de usuario antes de empezar el siguiente servicio.
El problema, a veces cuando se hace clic en el botón se bloquea la aplicación.
Uso "setOnSucceded", pero aún así la aplicación a veces se bloquea ... el servicio no es demasiado tedioso ... solo un setText en la etiqueta y otros cambios como setDisabled, setOpacity ... no más de 10 cambios. ..
El resumen de mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Button.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (!service1.isRunning()) {
service1.reset();
service1.start();
}
service1.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
@Override
public void handle(WorkerStateEvent event) {
if (!service2.isRunning()) {
service2.reset();
service2.start();
}
}
});
}
});
Tal y como está a veces funciona, pero otras se bloquea la aplicación.
Necesito poder estar seguro de que el primer servicio haya hecho los cambios gráficos y estos los vea el usuario, a partir de ahí que se ejecute el segundo servicio.
Saludos
Valora esta pregunta


0