数据绑定,在多线程中出现问题
我的程序是一个主窗口负责界面操作,一个主要的工作类TaskServer(它是单件模式的)
主界面负责启停TaskServer的工作,并且用一个DataGridView控件显示TaskServer中存放的一个BindingList。
数据绑定,我是直接在主窗口的构造函数中写:dataGrid.DataSource = TaskServer.DataList;
然后,在TaskServer中也开了若干线程,其中一个是往DataList里面添加东西的。
我一旦添加东西,就捕获到异常:“线程间操作无效: 从不是创建控件“dataGrid”的线程访问它。”
数据绑定不是原本就是可以安全地跨线程的吗?为什么这里却不给我用?
------解决方案--------------------dataGrid中不要直接绑定TaskServer.DataList,安全的话,界面中维护一个自己的DataList,界面中用一个方法把TaskServer.DataList复制到界面自己的DataList,然后再绑定,这个方法用委托调用就可以用于多线程了,