Hi,
ich starte einen Thread, sobald auf einen Button geklickt wird, damit die GUI nicht einfriert.
Und zwar circa so:
In XmlToObject rufe ich einen JAXB auf und lese eine XML-Datei ein und hantiere nun mit diesen Objekten. Dabei habe ich mir eine Helper-Klasse geschrieben, die eine Methode "getEnts" enthält, um gewisse Zahlen aus den Attributen der Objekte zu holen.
In XmlToObject starte ich eine Methode in einer anderen Klasse "Wrtier", die nun für verschiedene Aufgaben die Zahlen rausholen soll (pro Aufgabe eine Methode und anschließend Textdateien erstellen soll). Es werden keine weiteren Threads genutzt. Die Methode aus der Helperklasse zum Auslesen der Zahlen wird bisher einmal in der Writer-Klasse benutzt.
Es hat alles funktioniert bis ich meinen Code so ergänzte, dass die Methode "getEnts" der Helperklasse nun ein zweites Mal, in einer anderen Methode in der Writer Klasse aufgerufen wird.
Der Code wird nicht mehr ausgeführt, die GUI befindet sich im Leerlauf.
Es wird auch kein Fehlercode ausgespuckt also ab in den Debugger und ich komme, sobald es an die Methode "getEnts" geht, in die Task.java-Klasse bzw. genauer
Und dort lande ich im catch-Zweig.
Wieso kann ich die Methode einmal aufrufen, aber kein zweites Mal?
So einfach verständliche, detaillierte Literatur im Netz konnte ich bis jetzt noch nicht finden.
Kann mir jemand helfen?
ich starte einen Thread, sobald auf einen Button geklickt wird, damit die GUI nicht einfriert.
Und zwar circa so:
Code:
private void startNormalTransformTask() {
Task task = new Task<Void>() {
@Override
public Void call() throws Exception {
XmlToObject.start(Mod);
Platform.runLater(() -> {
//Gui updaten
}
});
//Gui updaten wenn fertig
});
updateMessage("Finished");
return null;
}
};
Thread th = new Thread(task);
th.setDaemon(true);
th.start();
}
In XmlToObject rufe ich einen JAXB auf und lese eine XML-Datei ein und hantiere nun mit diesen Objekten. Dabei habe ich mir eine Helper-Klasse geschrieben, die eine Methode "getEnts" enthält, um gewisse Zahlen aus den Attributen der Objekte zu holen.
In XmlToObject starte ich eine Methode in einer anderen Klasse "Wrtier", die nun für verschiedene Aufgaben die Zahlen rausholen soll (pro Aufgabe eine Methode und anschließend Textdateien erstellen soll). Es werden keine weiteren Threads genutzt. Die Methode aus der Helperklasse zum Auslesen der Zahlen wird bisher einmal in der Writer-Klasse benutzt.
Es hat alles funktioniert bis ich meinen Code so ergänzte, dass die Methode "getEnts" der Helperklasse nun ein zweites Mal, in einer anderen Methode in der Writer Klasse aufgerufen wird.
Der Code wird nicht mehr ausgeführt, die GUI befindet sich im Leerlauf.
Es wird auch kein Fehlercode ausgespuckt also ab in den Debugger und ich komme, sobald es an die Methode "getEnts" geht, in die Task.java-Klasse bzw. genauer
Code:
private static final class TaskCallable<V> implements Callable<V> {
}
Und dort lande ich im catch-Zweig.
Wieso kann ich die Methode einmal aufrufen, aber kein zweites Mal?
So einfach verständliche, detaillierte Literatur im Netz konnte ich bis jetzt noch nicht finden.
Kann mir jemand helfen?