winform线程间操作无效: 从不是创建控件的线程访问它

为什么.net不让我们跨线程操作控件,这是有好处的。因为如果你的线程多了,那么当两个线程同时尝试将一个控件变为自己需要的状态时,线程的死锁就会发生。但是难道就是因为这个原因,我们就只能让程序卡着么?当然不是,这里教大家一个解决方案:用BackGroundWorker
那么是不是用Thread就不行呢?其实不是的,.net中也有线程安全的控件访问。如果想了解如何用thread来解决“线程间操作无效: 从不是创建控件的线程访问它”,建议大家看看这篇文章:
        http://www.cnblogs.com/imissherso/archive/2007/01/28/632480.html
        此文从非线程安全,线程安全和BackgroundWork三种方法讨论了这个问题,而我这里是针对第三个问题深入解释了下,希望能够对大家带来帮助。

 

 

如果这样做了以后还是会出现同样的问题,则在load里面加上这么一句:

System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;

这样就不会出现问题啦!