Hallo.
Schaut euch bitte folgende zwei Methoden an:
Im Programmablauf ergibt es sich, dass diese beiden Methoden nacheinander aufgerufen werden. Zuerst onCreate, weil etwas erstellt wurde, dann nach kurzer Zeit onDelete, weil ein anderer Vorgang bewirkt hat, dass etwas gelöscht wurde.
In beiden Methoden wird ein Thread geöffnet, der nach meiner Interpretation dann beendet ist, wenn refreshChildren() abgearbeitet wurde. Die Abläufe darin sind recht komplex und über mehrere Ebenen verteilt, weshalb ein posten dieser Methode keinen Sinn macht.
Ausgangssituation steht.
Nun gibt es beim Aufruf von onCreate kein Problem. Der Thread wird gestartet und ordnungsgemäß beendet. Das ist wenigstens das, was ich glaube Beim Aufruf von onDelete wird der Thread gestartet, terminiert aber nicht, sodass das komplette Programm bis in alle Ewigkeit (also bis ich das Programm per Taskmanager oder rotem Eclipse-Knopf schliesse) hängt. Ich könnte mir das so erklären, dass refreshChildren nicht terminiert. Das ist aber ohne die Ausführung in einem eigenen Thread nicht der Fall.
Der Grund, weshalb ich diesen Weg der Ausführung wähle, ist, dass ich in bestimmten Fällen eine SWTException wegen Invalid Thread Access bekomme. Irgendwie muss ich diese in den Griff bekommen und das erscheint mir als die richtige Variante.
Hat jemand von euch eine Idee, weshalb der zweite Thread offensichtlich nicht terminiert? Muss ich vielleicht etwas mit dem Display machen, damit das so funktioniert?
Ich bedanke mich bei jedem, der sich die Mühe macht mir zu helfen.
MfG,
Ralf
Schaut euch bitte folgende zwei Methoden an:
Code:
protected void onCreate(eHomeBase newObject) {
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
refreshChildren();
}
});
}
protected void onDelete(Object model) {
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
refreshChildren();
}
});
}
Im Programmablauf ergibt es sich, dass diese beiden Methoden nacheinander aufgerufen werden. Zuerst onCreate, weil etwas erstellt wurde, dann nach kurzer Zeit onDelete, weil ein anderer Vorgang bewirkt hat, dass etwas gelöscht wurde.
In beiden Methoden wird ein Thread geöffnet, der nach meiner Interpretation dann beendet ist, wenn refreshChildren() abgearbeitet wurde. Die Abläufe darin sind recht komplex und über mehrere Ebenen verteilt, weshalb ein posten dieser Methode keinen Sinn macht.
Ausgangssituation steht.
Nun gibt es beim Aufruf von onCreate kein Problem. Der Thread wird gestartet und ordnungsgemäß beendet. Das ist wenigstens das, was ich glaube Beim Aufruf von onDelete wird der Thread gestartet, terminiert aber nicht, sodass das komplette Programm bis in alle Ewigkeit (also bis ich das Programm per Taskmanager oder rotem Eclipse-Knopf schliesse) hängt. Ich könnte mir das so erklären, dass refreshChildren nicht terminiert. Das ist aber ohne die Ausführung in einem eigenen Thread nicht der Fall.
Der Grund, weshalb ich diesen Weg der Ausführung wähle, ist, dass ich in bestimmten Fällen eine SWTException wegen Invalid Thread Access bekomme. Irgendwie muss ich diese in den Griff bekommen und das erscheint mir als die richtige Variante.
Hat jemand von euch eine Idee, weshalb der zweite Thread offensichtlich nicht terminiert? Muss ich vielleicht etwas mit dem Display machen, damit das so funktioniert?
Ich bedanke mich bei jedem, der sich die Mühe macht mir zu helfen.
MfG,
Ralf