-1
我无法用我自己的话解释这一点,所以这里的情况:跨线程错误
myBindingSource.Add(new myElement());
SetDataSource(myBindingSource);
myBindingSource.Add(new myElement());
我总是赶在加的第二次调用异常(一个跨线程除外)。这里的SetDataSource void:
delegate void SetDataSourceCallback(BindingSource db);
private void SetDataSource(BindingSource db)
{
if (myDataGridView.InvokeRequired)
{
SetDataSourceCallback d = new SetDataSourceCallback(SetDataSource);
myDataGridView.Invoke(d, new object[] { db });
}
else
{
myDataGridView.DataSource = db;
}
}
我不明白为什么这种情况继续发生!
从工作线程更新数据源是不合法的。您还需要一个ClearDataSource()方法,以便您可以将myDataGridView.DataSource属性重置为null。 –
使用此答案:调用使用WPF/UI主线程的调度程序: http://stackoverflow.com/questions/11625208/accessing-ui-main-thread-safely-in-wpf –