有两种方式解决
1.在窗体构造函数中写Control.CheckForIllegalCrossThreadCalls =false;
2.使用Invoke等委托函数。
问题原因是。net2.0以后拒绝多线程访问空间,避免空间造成死锁。以前Control.CheckForIllegalCrossThreadCalls =false;默认就是这样,现在默认为true。
如果不会好几个线程同时操作一个控件用方法1就可以。如果存在多个线程一起操作控件使用方法2
方法2可以
Invoke(new MethodInvoker(delegate()
{
//do something...
}));
相关文章
- 12-12用委托在listbox中异步显示信息,解决线程间操作无效,从不是创建控件的线程访问它
- 12-12线程间操作无效: 从不是创建控件“label4”的线程访问它。
- 12-12System.InvalidOperationException:“线程间操作无效: 从不是创建控件“xxx”线程它。”
- 12-12关于“线程间操作无效: 从不是创建控件’textBox1‘的线程访问它”异常的解决方法
- 12-12从.NET 1.1 升级到.NET 4.0 遇到 线程间操作无效: 从不是创建控件 [XX] 的线程访问它.
- 12-12(委托事件处理)关于多线程执行显示进度条的实例(转)&&线程间操作无效: 从不是创建控件“rtxtEntryNO”的线程访问它。
- 12-12[转载]线程间操作无效: 从不是创建控件“ListBox1”的线程访问它
- 12-12线程间操作无效: 从不是创建控件"窗体的名称"的线程访问它.
- 12-12【问题解决】线程间操作无效:从不是创建控件“textBox1”的线程访问它
- 12-12System.InvalidOperationException:“线程间操作无效: 从不是创建控件“txtPortName02”的线程访问它。”