Threads Methode nebenbei ausführen, Status verarbeiten

Garog0201

Mitglied
Hallo,

ich habe mir einiges zu Threads bzw zum Thema future durchgelesen und probiert. Da das Thema sehr neu für mich ist, stoße ich da gerade an meine Verständnisgrenzen.

Ich habe einen Button in meinem Programm (JavaFX Applikation), wenn ich diesen drücke dann soll ein Wartebalken kommen, im Hintergrund soll nun eine Methode gestartet werden welche mir viele Dateien übers Netzwerk umbenennt ( was sehr langsam ist). Wenn alle Dateien umbenannt sind, dann soll der Wartebalken wieder weg und eine Meldung zur Verarbeitung kommen.

Den Wartebalken(neue Stage mit progressbar) habe ich, die Meldung zur Verarbeitung dank Dialoge (seit 8u40) auch.
Führe ich das ganze "hintereinander" aus, ist es kein Problem und funktioniert, nur "hängt" sich das Programm während der Dateibearbeitung natürlich auf, bzw. reagiert nicht mehr bis alle Dateien umbenannt sind.
Das hängen des Programms wollte ich nun mit Nebenläufigkeit, Threads, futureTasks, was auch immer, lösen.
Nur stoße ich dabei auf ein kleines Problem wo ich nicht weiter komme.
Java:
        Dialoge.showWartebalken();
startFutureTask(m);
Dialoge.closeWartebalken();
Der Wartebalken kommt und geht sofort wieder, was natürlich auch verständlich ist.
Wie bekomme ich es nun hin, das die Methode Dialoge.closeWartebalken(); erst aufgerufen wird, wenn der Task fertig ist.
Ich habe schon versucht das Dialoge.closeWartebalken(); in den Task zu nehmen, allerdings macht er dann gar nichts. Hat wohl damit zu tun das mit der Task und JavaFX nicht so ganz hinhaut mit den Zugriffen.
 
Es soll ja keine Zeit x Warten 😉 das bearbeiten der Dateien dauert gut 30-45 Sekunden. In der Zeit spricht von Windows die Ansprechüberwachung für das Programm an und das ist natürlich unschön.
Daher soll nur die Methode in den Hintergrund verschwinden und sobald diese fertig ist mir meine zusätzliche Stage (mit dem Wartebalken) wieder schließen.
 
Ja das mit der Zeit X warten war nur eine Ergänzung. Folge den Link und dir werden 2 Möglichkeiten gezeigt wie du dafür sorgst das dein Programm solange wartet bis der FutureTask die Bearbeitung der Dateien abgeschlossen hat
Die eine Möglichkeit wird vom Fragesteller gezeigt: Diese funktioniert ist aber sehr unschön
Die zweite Möglichkeit wird als Antwort gegeben und sollte bevorzugt werden -> nur eine Methode aufrufen vom FutureTask Objekt.
 

Neue Themen


Zurück
Oben