Zanderbird
Grünschnabel
Hallo,
habe eine GUI über die ein Swingworker mittels start und stopbutton gesteuert werden kann.
Mit drücken des Stopbuttons wird ein Flag gesetzt das dem Swingworker sagt das er seinen Prozess beenden soll, dieser Vorgang kann aber bis zu 1min dauern und während der Zeit printed er auf der GUI Statusnachrichten.
Wie kann ich jetzt geschickt auf das Ende des Workers warten ohne eine blockierende while Schleife oder dergleichen zu verwenden.
Gruß
Zander
Code Schnipsel:
habe eine GUI über die ein Swingworker mittels start und stopbutton gesteuert werden kann.
Mit drücken des Stopbuttons wird ein Flag gesetzt das dem Swingworker sagt das er seinen Prozess beenden soll, dieser Vorgang kann aber bis zu 1min dauern und während der Zeit printed er auf der GUI Statusnachrichten.
Wie kann ich jetzt geschickt auf das Ende des Workers warten ohne eine blockierende while Schleife oder dergleichen zu verwenden.
Gruß
Zander
Code Schnipsel:
Code:
GUI: im ActionListener
if (e.getSource() == btnStart) {
btnStart.setEnabled(false);
btnStop.setEnabled(true);
this.stop = false;
logic = new Xtractor();
logic.setGui(this);
logic.execute();
}
// Stop Button
if (e.getSource() == btnStop) {
this.stop = true;
btnStop.setText("wait to complete job");
synchronized (logic) {
try {
logic.wait();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
btnStart.setEnabled(true);
btnStop.setEnabled(false);
btnStop.setText("Stop");
}
SwingWorker aka Xtractor:
while (!gui.isStop()) {
.
.
.
do a lot zip operations
.
.
.
}
gui.notify();
return null;
Zuletzt bearbeitet: