Bild bearbeiten und Wartezeit

Hallo,

ich habe eine doppelte For-Schleife (i,j),
die für die Pixel eines Bildes Bild.GetPixel(i, j) ausgeben soll.
In der Schleife habe ich deshalb ein Listbox-Fenster angesprochen,
das mir ausgeben soll(listbox.items.add), wieviel Prozent des Bildes schon bearbeitet sind.

Das funktioniert auch, allerdings erscheint erst lange die Sanduhr und erst wenn die Schleifen fertig durchlaufen sind, werden auf einen Schlag die Zwischenstände angezeigt…Warum wird der aktuelle Wert nicht direkt in die Listbox geschrieben?

Zusatzfrage: Gibt es Möglichkeiten, solche Schleifen als Hintergrundprozesse laufen zu lassen, so dass die Sanduhr nur diesen Vorgang, nicht aber das ganze Programm lahm legt?

Daqnke für Tipps, Gruß Jörg

Hi Jörg,
generell ist es so das du mit deinen 2 For Schleifen verhinderst das das Fenster aktualisiert weil das Programm darauf wartet das deine aktuellen Aktionen abgeschlossen sind. Deswegen wird auch deine ListBox nicht aktualisiert. Möglich wäre vieleicht das du es mal mit dem „Application.DoEvents“ probierst. Damit veranlasst du das das Programm trotz des aktuellen „Threads“ mit der eigentlichen Programmschleife weitermacht und dann auch alles wieder aktualisiert.

Zu deiner zweiten Frage du kannst neben deiner „Hauptschleife“ auch unabhängige Threads machen. Gib das mal in der Suche von Visual Basic ein da findest du ein paar nette Beispiele. Vieleicht helfen die dir ja weiter…

Gruß
Wingman223