CheckForIllegalCrossThreadCalls 多个线程操作某一控件
2010-06-29 17:46
423 查看
MSDN:
如果试图访问控件的方法或属性之一的线程不是创建该控件的线程,则通常会导致不可预知的结果。通常,无效的线程活动是对访问控件的 Handle 属性的错误线程的调用。将 CheckForIllegalCrossThreadCalls 设置为 true 可以在调试时更容易查找并诊断此线程活动。请注意在调试器外部启动应用程序时,非法跨线程调用将始终引发异常。
Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。
但是可以通过将 CheckForIllegalCrossThreadCalls 属性的值设置为 false 来禁用此异常。这会使控件以与在 Visual Studio 2003 下相同的方式运行。
代码:
Control.CheckForIllegalCrossThreadCalls = false;
如果试图访问控件的方法或属性之一的线程不是创建该控件的线程,则通常会导致不可预知的结果。通常,无效的线程活动是对访问控件的 Handle 属性的错误线程的调用。将 CheckForIllegalCrossThreadCalls 设置为 true 可以在调试时更容易查找并诊断此线程活动。请注意在调试器外部启动应用程序时,非法跨线程调用将始终引发异常。
Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。
但是可以通过将 CheckForIllegalCrossThreadCalls 属性的值设置为 false 来禁用此异常。这会使控件以与在 Visual Studio 2003 下相同的方式运行。
代码:
Control.CheckForIllegalCrossThreadCalls = false;
相关文章推荐
- CheckForIllegalCrossThreadCalls 多个线程操作某一控件
- CheckForIllegalCrossThreadCalls 多个线程操作某一控件
- 用CheckForIllegalCrossThreadCalls 属性解决C#线程间操作无效
- 线程访问UI控件和Control.CheckForIllegalCrossThreadCalls属性
- 用CheckForIllegalCrossThreadCalls 属性解决C#线程间操作无效
- 多线程之TextBox.CheckForIllegalCrossThreadCalls = false;//消除对textbox控件的线程检测
- 利用CheckForIllegalCrossThreadCalls=false设置跨线程访问
- C# 控制台的载入和关闭,CheckForIllegalCrossThreadCalls、GetMessage()
- Control.CheckForIllegalCrossThreadCalls=false不可在多线中随便使用
- Control.CheckForIllegalCrossThreadCalls = false不可在多线程中使用
- CheckForIllegalCrossThreadCalls = false
- c#学习之路: CheckForIllegalCrossThreadCalls = false 是干嘛的?
- CheckForIllegalCrossThreadCalls和control.Invoke
- [C#.NET(WinForm)] - Control.CheckForIllegalCrossThreadCalls=false不可在多线中随便使用
- CheckForIllegalCrossThreadCalls = false 是干嘛的?
- Control.CheckForIllegalCrossThreadCalls=false不可在多线中随便使用
- CheckForIllegalCrossThreadCalls和control.Invoke有什么不同
- CheckForIllegalCrossThreadCalls和control.Invoke
- 多线程中使用CheckForIllegalCrossThreadCalls = false访问窗口
- Control.CheckForIllegalCrossThreadCalls