我们正在绑定一个DataGridview
using BindingSource
。所以在主线程中我们给出了这样的。
class1BindingSource = new BindingSource();
class1BindingSource.DataSource = class1List;
this.dataGridView1.DataSource = class1BindingSource;
之后,我在表单中放置了一个后台工作人员,并在单击按钮时触发。
即在按钮中单击
this.backgroundWorker1.RunWorkerAsync()
在BackgroundWorker
DoWork Event
我试图BindingSource
通过尝试更新DataGridview
.
所以BindingSource
重置是在另一个类的方法中完成的。
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);
}
}
}
现在我遇到了一个异常,比如BindingSource
不能是它自己的数据源。不要将DataSource
和DataMember
属性设置为引用回 的值BindingSource
。
如果我在我的中这样做,DoWork Event
那么我可以使用在控制线程本身中重置项目BeginInvoke method
。
但实际上我正在尝试模拟我们的应用场景。所以我想以这种格式解决这个问题。
谁可以帮我这个事。