我的程序是一个主窗口负责界面操作,一个主要的工作类TaskServer(它是单件模式的)主界面负责启停TaskServer的工作,并且用一个DataGridView控件显示TaskServer中存放的一个BindingList。数据绑定,我是直接在主窗口的构造函数中写:dataGrid.DataSource = TaskServer.DataList;然后,在TaskServer中也开了若干线程,其中一个是往DataList里面添加东西的。我一旦添加东西,就捕获到异常:“线程间操作无效: 从不是创建控件“dataGrid”的线程访问它。”数据绑定不是原本就是可以安全地跨线程的吗?为什么这里却不给我用?
解决方案 »
- XML取最小值
- 正则表达式的问题
- C#除了能做asp.net的网站以外还能开发其他的程序么?
- 关于API FindWindowEx的一个难题
- Ftp 命令 NLST 如何使用?
- 关于选择文本文件并读取报错的问题
- 向自定义的panel里面放一个GridView GridView宽度大于panel时自定义panel画的边框就没了(只是GridView覆盖的部分) 希望大家帮忙 谢谢了
- 关于大体积图像分割的方法。
- 求救,C++程序中的回调函数如何向C#转移
- 我的 asp.net 应用程序的控件不见了
- 小问题!html
- 各位大哥大姐,急救啊 怎么把C#窗体中pictureBox控件绘制的文字显示到文本框中,还有重绘 ,非常感谢啊
WPF用 Dispictor
private object lockobj = new object();lock(lockobj){
//绑定数据。
}
-->你这个线程里面添加东西的操作应该调用主窗口的Invoke吧
如果还要把主窗口的Invoke传到这里来,那设计不就乱了吗
试了一下,这是个解决方法,不过还是不够完美。不断地把界面上的list清空然后重新复制入原list的内容,这样一来界面的datagrid会不断重新清空后重新载入。用户在里面滚定查看内容都成为很困难的一件事情。不知道还有啥改进方法没。