M
matthias_
Gast
Hey...
Ich habe eine Anwendung geschrieben die Daten aus einem XML-File in Datensätze umwandelt und diese dann in wieder in .sql-files rausschreibt. Da das ganze schon mal ein paar Minuten dauern kann würde ich gerne per Button-Klick die Arbeit abbrechen können (außerdem wäre es nett wenn das GUI trotz Hintergrundarbeit reagieren würde)
Also hab ich die Arbeit in einen Thread geschmissen...Im GUI wird dieser Thread ca. so aufgerufen.
Das Problem hier ist, dass durch die Parallelität der Code nach WorkerThread.start() ausgeführt wird. Ich will den nächsten Thread jedoch erst aufrufen wenn der vorige beendet wurde...
Habs schon mit Join() oder einer while(WorkerThread.getState() != Thread.State.Terminated) schleife und nem sleep darin probiert aber das führte auch nicht zum gewünschten Ergebnis...
Kennt vielleicht jemand eine Lösung mit der ich trotzdem die Threads aus der GUI-Klasse aufrufen kann?
Achja ich verwende SWT!
Danke im Vorraus! mfg Matthias
Ich habe eine Anwendung geschrieben die Daten aus einem XML-File in Datensätze umwandelt und diese dann in wieder in .sql-files rausschreibt. Da das ganze schon mal ein paar Minuten dauern kann würde ich gerne per Button-Klick die Arbeit abbrechen können (außerdem wäre es nett wenn das GUI trotz Hintergrundarbeit reagieren würde)
Also hab ich die Arbeit in einen Thread geschmissen...Im GUI wird dieser Thread ca. so aufgerufen.
Code:
int[] intModelSelection = mlstModels.getSelectionIndices(); // Welche Modelle hat der Benutzer ausgewählt?
for (i = 0; i < intModelSelection.length; i++)
{
mlstModels.deselectAll(); // In der ListBox alles deselektieren
mlstModels.select(intModelSelection[i]); // Es soll immer selektiert sein, woran gerade gearbeitete wird
ConfigSet cfsActualModel = (ConfigSet) cfgConfig.mvecConfigList.get(intModelSelection[i]); //Configuration auslesen
ConvertMain WorkerThread = new ConvertMain(GUI.this, cfsActualModel, vecTableSelection);
WorkerThread.start();
}
Das Problem hier ist, dass durch die Parallelität der Code nach WorkerThread.start() ausgeführt wird. Ich will den nächsten Thread jedoch erst aufrufen wenn der vorige beendet wurde...
Habs schon mit Join() oder einer while(WorkerThread.getState() != Thread.State.Terminated) schleife und nem sleep darin probiert aber das führte auch nicht zum gewünschten Ergebnis...
Kennt vielleicht jemand eine Lösung mit der ich trotzdem die Threads aus der GUI-Klasse aufrufen kann?
Achja ich verwende SWT!
Danke im Vorraus! mfg Matthias