"BindingSource kann keine eigene Datenquelle sein" - Fehler beim Versuch, die Bindungsquelle von einer Methode in einer anderen Klasse zurückzusetzen
Wir binden aDataGridview
mitBindingSource
. Also im Haupt-Thread haben wir so gegeben.
class1BindingSource = new BindingSource();
class1BindingSource.DataSource = class1List;
this.dataGridView1.DataSource = class1BindingSource;
Danach habe ich einen Background Worker in das Formular gestellt und löst mit einem Klick einen Button aus.
in der Schaltfläche klicken
this.backgroundWorker1.RunWorkerAsync()
In demBackgroundWorker
DoWork Event
Ich versuche das zu aktualisierenBindingSource
und dort durch den Versuch, die zu aktualisierenDataGridview
.
Also dieBindingSource
Das Zurücksetzen erfolgt in einer Methode einer anderen Klasse.
DoWork Event
Class2 cl2 = new Class2();
cl2.UpdateBindingSource(class1BindingSource);
UpdateBindingSource Method
public void UpdateBindingSource(BindingSource bs)
{
Class1 c1 = bs.Current as Class1;
for (int i = 0; i < 1000; i++)
{
lock (bs.SyncRoot)
{
c1.MyProperty1 = i;
bs.ResetItem(0);
}
}
}
Jetzt bekomme ich eine Ausnahme wieBindingSource
kann nicht seine eigene Datenquelle sein. Stellen Sie das nicht einDataSource
undDataMember
Eigenschaften auf Werte, die auf verweisenBindingSource
.
Wenn ich das mache in meinemDoWork Event
dann kann ich das Element im Steuerthread selbst mit zurücksetzenBeginInvoke method
.
Aber eigentlich versuche ich unser Anwendungsszenario zu simulieren. Also möchte ich das in diesem Format lösen.
Kann mir jemand dabei helfen.