我有一个工作线程需要将项目添加到BindingList
. 但是,BindingList
是数据绑定到DataGridView
. 所以,当我尝试添加到列表中时,我得到一个InvalidOperationException (Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on.)
通常对于这个例外,你会这样做:
if(winformControl.InvokeRequired) {
winformControl.Invoke(MethodDelegate);
}
但是,数据绑定使事情变得混乱,因为看不到 Winform 控件。我所拥有的只是以下行,它引发了异常:
ClassInstance.MyBindingList.Add(myObject);
如果您有专门针对这种情况的解决方案,那就太好了。
如果不是,我如何让工作线程告诉我的主线程执行特定方法(使用工作线程提供的几个参数)?这可能是一个更可取的选择,因为我的工作线程目前实际上正在做很多事情(比如写入数据库),而且我不确定一切是否都是线程安全的。我是一名学生,刚接触多线程,这还不是我的强项。