导航

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

Posted on 2011-01-28 10:23  骑驴过赵桥  阅读(324)  评论(0)    收藏  举报

这是我在学习Lucene时,运行别人的Code时出现的一个问题,查阅MSDN后才知道原来是以线程不安全方式访问Windows窗体控件造成的,将CheckForIllegalCrossThreadCalls属性设置为false来禁用此异常,不过这会使控件以与在Visual Studio 2003下相同的方式运行。

MSDN上的解释是:访问Windows窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态,还可能出现其他与线程相关的Bug,包括争用和死锁。