2020-07-05C#报错:[其他信息: 线程间操作无效: 从不是创建控件“Form1”的线程访问它。]

广告

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();
            }));


注:如果不会出现多个线程同时访文一个控件,仍然可以用上面报错代码。

本文关键字多线程

支持Ctrl+Enter提交
暂无留言,快抢沙发!