现在的位置: 首页 > 综合 > 正文

CheckForIllegalCrossThreadCalls 多个线程操作某一控件

2012年11月18日 ⁄ 综合 ⁄ 共 420字 ⁄ 字号 评论关闭

MSDN:

如果试图访问控件的方法或属性之一的线程不是创建该控件的线程,则通常会导致不可预知的结果。通常,无效的线程活动是对访问控件的 Handle 属性的错误线程的调用。将 CheckForIllegalCrossThreadCalls 设置为 true 可以在调试时更容易查找并诊断此线程活动。请注意在调试器外部启动应用程序时,非法跨线程调用将始终引发异常。

Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。
但是可以通过将 CheckForIllegalCrossThreadCalls 属性的值设置为 false 来禁用此异常。这会使控件以与在 Visual Studio 2003 下相同的方式运行。

代码:

Control.CheckForIllegalCrossThreadCalls = false;

抱歉!评论已关闭.