Warten auf den Swingworker

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:
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:
Zurück