"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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage