while schleife und repaint probleme

Looky

Erfahrenes Mitglied
Hallo zusammen,

ich habe eine while Schleife, die ich aus bestimmten gründen nicht in einen eigenen Thread packen kann. Muss also im Main thread des Programmes laufen. Dadurch wird die Applikation natürlich lahmgelegt. Die while schleife läuft nur ca 10 sek. ich würde gerne einen laufbalken anlegen.

Gibt es eine Möglichkeit, dem Thread.sleep in der while schleife zu sagen, dass die zeit die die schleife wartet zum repaint der main applikation genutzt werden soll?

Thx
Chriz
 
Warumn kannst du die Schleife nicht in einen eigenen Thread auslagern? Zur Not (aber wirklich nur zur Not) kann man ja auch das Nachzeichnen in nem eigenen Thread laufen lassen). In dem eigenen Paint-Thread würdest du dann halt immer mal wieder die Paint(Graphics g)-Methode rufen (nicht die repaint()). Das ist zwar nich wirklich schöner Stil sollte aber zur Not funktionieren.
Gruß
sony2
 
Wenn ich Dich richtig verstehe, möchtest Du in Deiner While-Schleife etwas verarbeiten/berechnen/Daten lesen ...
Das ganze ist in einer GUI-Anwendung und Du möchstest einen Fortschritt mittels Balken anzeigen.
Wenn dem so ist, solltest (eigetnlich musst) Du tatsächlich diese Verarbeitung in einen extra Thread legen!
Um sicherzugehen und genauer antworten zu können, könntest Du Dein Programm mittels Code-Fragmenten etwas konkreter skizzieren?
 
Zuletzt bearbeitet:
Kann ich leider nicht, es handelt sich hierbei um eine Methode, die einen Algorithmus beinhaltet den wir hier über 2 Jahre hinweg entwickelt haben und (hoffentlich) bald für eine Menge Geld verkaufen werden...

Mfg
Chriz
 
Kann ich leider nicht, es handelt sich hierbei um eine Methode, die einen Algorithmus beinhaltet den wir hier über 2 Jahre hinweg entwickelt haben und (hoffentlich) bald für eine Menge Geld verkaufen werden...

Mfg
Chriz


Was hat das denn damit zu tun?
Du kannst jede beliebige Mehtode in einen Thread legen, in diesem Fall müsstest Du es sogar, denn es hat keinen Sinn für den Anwender 10 Sekunden zu warten, und gar wenn Du einen Fortschrittsbalken reinbauen willst kannst Du Deinen Langläufer nicht in den Event-Thead stellen, denn dann funktioniert Dein Balken nicht!
Alles was Du tun müsstest ist für Deine langlaufende Verarbeitung einen Wrapper zu bauen. In alter Form wäre das ein Runnable welches halt Deinen Algorithmus aufruft. und dieses Runnable stellst Du in einen Thread. In moderner Form kann man das auch sicher mit einem Callable wrappen machen und mit einem Executer aufrufen, wenn mich nicht alles täuscht.
 
Zurück