Laden...

Controls mit .Invoke() / .Begininvoke() in Window aktualisieren lassen

Erstellt von oehrle vor 11 Jahren Letzter Beitrag vor 11 Jahren 772 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 11 Jahren
Controls mit .Invoke() / .Begininvoke() in Window aktualisieren lassen

Hallo, ich experimentiere im Moment mit meiner Applikation. Hier werden jede Mengen von Daten kopiert und in Db's geschrieben, wozu ich auch jede Menge an Ausgaben in der Form ausgebe. das Problem ist, das die Ausgabecontrols ja die aktuellen Daten nicht sofort angezeigt werden. Nun hatte ich zuerst mit dem BackgroundWorker Erfahrungen gesammelt. Nun habe ich aber auch gesehen, das man mit dem Dispatche.Invoke() oder Dispatcher.BeginInvoke() die Controls aktualisieren kann.
Ich habe eine ListBox in der ich den akuellen Status und weitere Meldungen ausgebe. Wenn ich da eine neue Meldung absetze, dan kann ich das doch so ausgeben:


Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => lbx_Ablaufplan.Items.Insert(0, "\n\n\nNeue Dateien von Datenpool suchen und in Sammelpool kopieren ...\n")));

So wie ich das verstehe, kann ich für new Action() auch eine Delegatemethode einsetzen, oder?
Das hatte ich auch schon probiert. Das Problem ist, wenn ich das so mache werden meine COntrols nicht beschrieben, es werden keine Meldungen in der ListBox angezeigt.
Muss ich da doch noch einen Abfrage mit CheckAccess und Verify durchführen, wobei ich das so verstehe das man diese Abprüfung nur macht wenn die Aktualisierung aus einem anderen Thread aufgerufen wird?

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 11 Jahren
Problemlösung

Das Problem kommt wohl daher, da ich die Abarbeitung meiner Abarbeitung von Dateien kopieren usw nicht in einem eigenen Thread gestartet wurde. Mache ich das, dann werden die Controls auch aktualisiert.

A
764 Beiträge seit 2007
vor 11 Jahren
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 11 Jahren
Problem gelöst

danke für die Info.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 11 Jahren
[gelöst]

Problem war, das ich die Datensätze aus diversen Tabellen zusammengebaut habe, aber in dieser nicht explizit akutalisiert hatte.