“BindingSource ne peut pas être sa propre source de données” - erreur lors de la réinitialisation de la source de liaison à partir d'une méthode d'une autre classe

Nous sommes la liaison d'une DataGridview à l'aide de BindingSource. Ainsi, dans le thread principal, nous avons donné comme ça.

            class1BindingSource = new BindingSource();
            class1BindingSource.DataSource = class1List;  
            this.dataGridView1.DataSource = class1BindingSource;

Après que j'ai mis un fond travailleur dans la forme et le déclenchement en un clic de bouton.

c'est à dire dans le bouton cliquez sur

this.backgroundWorker1.RunWorkerAsync()

Dans le BackgroundWorker DoWork Event je suis en train de mettre à jour le BindingSource et il y en essayant de mettre à jour le DataGridview.

De sorte que le BindingSource reset est fait dans une méthode d'une autre classe.

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);
                }
            }
        }

Maintenant, je me fais une exception comme BindingSource ne peut pas être sa propre source de données. Ne définissez pas la DataSource et DataMember propriétés à valeurs qui renvoient à BindingSource.

Si je fais cela dans mon DoWork Event alors je peux réinitialiser l'élément dans le contrôle de fil lui-même à l'aide de BeginInvoke method.

Mais en fait je suis en train de simuler notre scénario de l'application. Je tiens donc à résoudre ce dans ce format.

Quelqu'un peut-il m'aider sur ce point.

OriginalL'auteur Mahesh KP | 2013-01-10