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

发布时间:2020年07月05日 阅读:174 次

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


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

Tag:多线程
相关文章

发表评论: