F
Florian Scheidler
Gast
Hallo zusammen,
ich habe ein Tool programmiert, in dem innerhalb eines Threads ein Datenverarbeitungsprozess abgearbeitet wird. Dabei wird der Ladebalken progress innerhalb dieser Verarbeitungsschleife aktualisiert.
Aufruf Thread mit Verarbeitungsfunktion TabelleErstellen():
Aktualisieren des Ladebalkens progress innerhalb der Schleife in der Funktion TabelleErstellen():
Das Ganze funktioniert auch wunderbar. Statt nun einen solchen Verarbeitungsprozess zu starten, muss ich nun
innerhalb einer Schleife mehrere solche Prozesse starten. Am Ende der Schleife warte ich mit Hilfe einer Schleife und der Variable naechster darauf dass der vorherige Prozess fertig ist, um dann den nächsten Schleifendurchlauf zuzulassen.
Der Ablauf funktioniert so auch wunderbar, nur der Ladebalken wird nicht mehr aktualisiert. Das scheint an der neuen
Warteschleife zu liegen.
Kann mir jemand erklären warum der Ladebalken nicht mehr aktualisiert wird und wie ich das wieder hinkriegen kann?
Wie gesagt, die Verarbeitungsprozesse laufen ansonsten völlig korrekt durch.
Bitte dringend um Hilfe.
Gruss Flo
ich habe ein Tool programmiert, in dem innerhalb eines Threads ein Datenverarbeitungsprozess abgearbeitet wird. Dabei wird der Ladebalken progress innerhalb dieser Verarbeitungsschleife aktualisiert.
Aufruf Thread mit Verarbeitungsfunktion TabelleErstellen():
Code:
new Thread( new Runnable()
{
public void run()
{
progress.setVisible(true);
progress.setValue(0);
TabelleErstellen(String.valueOf(vecKst2.elementAt(0)), zaehler, String.valueOf(vecKst2.elementAt(1)));
}
}).start();
Aktualisieren des Ladebalkens progress innerhalb der Schleife in der Funktion TabelleErstellen():
Code:
SwingUtilities.invokeLater(new Runnable() {
public void run()
{
labLegende.setText("Laden " + aktuelleKst + "...");
Zaehler = Zaehler + 1;
summeProgress = Zaehler / i * 100;
summeProgress2 = (int)summeProgress;
progress.setValue(summeProgress2);
}
});
Das Ganze funktioniert auch wunderbar. Statt nun einen solchen Verarbeitungsprozess zu starten, muss ich nun
innerhalb einer Schleife mehrere solche Prozesse starten. Am Ende der Schleife warte ich mit Hilfe einer Schleife und der Variable naechster darauf dass der vorherige Prozess fertig ist, um dann den nächsten Schleifendurchlauf zuzulassen.
Code:
while (z < anzahlProzesse)
{
new Thread( new Runnable()
{
public void run()
{
naechster = 0;
progress.setVisible(true);
progress.setValue(0);
TabelleErstellen(String.valueOf(vecKst2.elementAt(0)), zaehler, String.valueOf(vecKst2.elementAt(1)));
//Hier wird naechster auf 1 gesetzt, da der Thread fertig ist
naechster = 1;
}
}).start();
while (naechster == 0)
{
//Warte darauf das vorheriger Thread fertig ist und naechster auf 1 gesetzt wird!
}
z = z + 1;
}
Der Ablauf funktioniert so auch wunderbar, nur der Ladebalken wird nicht mehr aktualisiert. Das scheint an der neuen
Warteschleife zu liegen.
Kann mir jemand erklären warum der Ladebalken nicht mehr aktualisiert wird und wie ich das wieder hinkriegen kann?
Wie gesagt, die Verarbeitungsprozesse laufen ansonsten völlig korrekt durch.
Bitte dringend um Hilfe.
Gruss Flo