Laden...

Wie bekomme ich eine BindingSource Threadsicher?

Erstellt von digi333 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.095 Views
D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 14 Jahren
Wie bekomme ich eine BindingSource Threadsicher?

Ich arbeite in einem BackgroundWorker und möchte in dessen DoWork eine Liste an eine BindingSource übergeben. Jetzt bekomme ich natürlich die Fehlermeldung das die BindingSource nicht threadsicher ist. Was kann ich machen?


// nicht threadsicher
BindingSource.DataSource = list;

49.485 Beiträge seit 2005
vor 14 Jahren
D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 14 Jahren

Statt mit extra Threads und Control.Invoke, kann man auch mit der BackgroundWorker-Klasse ungültige threadübergreifende Vorgänge vermeiden. Dazu müssen bei BackgroundWorker alle Zugriffe auf das GUI einfach aus den ProgressChanged- oder RunWorkerCompleted-EventHandlern durchgeführt werden. Wenn man sich daran hält, ist explizites Control.Invoke bei BackgroundWorker nicht erforderlich, denn die genannten EventHandler werden hinter den Kulissen automatisch per Control.BeginInvoke aufgerufen.

Wie soll man mit den beiden angegebenen Events in meinem Beispiel arbeiten? Sollen die BindingSource-Aufrufe ausgelagert werden in RunWorkerCompleted?

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo digi333,

Sollen die BindingSource-Aufrufe ausgelagert werden in RunWorkerCompleted?

ja, insbesondere, wenn es nur um den gezeigten Zugriff geht.

Oder bei vielen Zugriffen alternativ eben auch in ProgressChanged.

herbivore