Aktualisieren von Forms und Komponenten
-
Hallo,
ich habe in C# ein Programm geschrieben (mein erstes richtiges C#-Programm),
welches Daten aus einer Textdatei in eine Tabelle auf dem SQL-Server importiert.
Da es sich um eine Menge Datensätze handelt (>80000) zeige ich einen Fortschrittsbalken
und einen Satzzähler an.Das funktioniert auch alles wunderbar...bis ich eine andere Anwendung in den
Vordergrund hole und später wieder auf mein Programm zurückschalte, dann wird
der Fortschrittsbalken und der Satzzähler nicht mehr aktualisiert - der
Datenimport läuft aber weiter und kommt auch zu einem Ende.Die entsprechenden Refresh-Methoden rufe ich nach dem Import jedes einzelnen
Satzes auf (funktioniert ja auch, solange die Anwendung im Vordergrund ist).Hat jemand eine Idee, was ich falsch mache bzw. was ich vergessen haben könnte ?
Vielen Dank.
Gruß,
KaFi55
PS: Dies ist mein erstes Posting in dem Forum - Bitte nicht gleich wild
draufhauen. Danke
-
Wenn Du - was ich stark vermute - keinen eigenen "Arbeitsthread" für den Import gemacht hast, dann werden die normalen Windowsmessages vermutlich nicht verarbeitet, weil Du ja die Zeit des "Haupt-Thread" total in Beschlag nimmst.
Das Refresh dürftest Du vermutlich gar nicht brauchen, sondern an Stelle der Refresh-Aufrufe solltest Du die Methode DoEvents der Klasse Application rufen. Damit wird der prozesseigene "Nachrichtendienst" angeworfen und arbeitet eben alles ab, was anliegt (u.a. auch die Anforderung, Teile bzw. die ganze Form neu zu zeichnen).
Aber Vorsicht: wenn Du Buttons und sonstige Komponenten hast, zu denen Du Ereignisbehandlungsroutinen erstellt hast, werden die auch wieder reagieren! Zur Not also die Komponenten deaktivieren (disable), solange Du Deine Datenmigration laufen läßt.
-
Application.DoEvents();
Das wars. Danke