Hallo Leute,
ich habe in Delphi 2005 ein win32 Programm geschrieben, dass viele Daten einer Datenbank konvertiert.
Damit ich den Fortschritt angezeigt bekomme habe ich eine Progressbar benutzt.
Mein vorgehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| progress.Step := 1; progress.smooth := false; progress.Min := 0; progress.Max := anzahlDerDatensaetze; while db.hasNext() do begin ... progress.StepIt(); end; |
Wenn ich nun 100 Datensäte habe überhaut kein Problem. Der Balken geht gleichmäßig bis zum Ende. Wenn ich aber 50.000 Datensäte habe und ich das Fenster verlasse und ein anderes Programm in den vordergrund hole oder ich mein Programmfenster verschiebe, dann hält die Progressbar an bis das Programm komplett fertig ist.
Zusätlich ist zu sagen, dass das Programm keine 100% CPU last hat, aber ein Programm mit niedriger priorität (ähnliches Programm wie Seti@home) hat die resteliche CPU Auslastung.
Ich kenne es von Java, dass der Thread der für das Zeichnen der Grafik zuständig ist mit niedriger priorität läuft. Kann ich entweder dem Frame/Form höhere priorität zum Zeichnen geben oder das neuzeichnen manuell anstoßen(was die nicht so schöne Lösung wäre).