C#报错:[其他信息: 线程间操作无效: 从不是创建控件“Form1”的线程访问它。]
出错的代码如下
Thread t1 = new Thread(new ThreadStart(readzcm)); Thread t2 = new Thread(new ThreadStart(getzcm)); t1.Start(); t2.Start(); Application.DoEvents(); Control.CheckForIllegalCrossThreadCalls = false;
经查询,问题原因是:net2.0以后拒绝多线程访问空间,避免空间造成死锁。以前Control.CheckForIllegalCrossThreadCalls =false;默认就是这样,现在默认为true。
如果出现多个线程同时访问一个控件就会报错,解决方法如下
Invoke(new MethodInvoker(delegate () { readzcm(); getzcm(); }));
注:如果不会出现多个线程同时访文一个控件,仍然可以用上面报错代码。