C#多线程编程时遇到跨线程访问异常的处理方法
来源:互联网 发布:网络连接图标是灰色的 编辑:程序博客网 时间:2024/05/22 07:53
在多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,如果需要访问窗口中的控件,可以在窗口构造函数中将CheckForIllegalCrossThre
public Form1()
{
}
也可以针对某一控件进行设置(感觉比上面的方法要好,通常“一棒子打沉一船人”不是什么好事),例如:
当然也可以使用C#方法回调来完成(推荐)
TextBox.Invoke(Delegate method,params object[] args);
MSDN说明:
如何:对 Windows 窗体控件进行线程安全调用
使用多线程提高 Windows 窗体应用程序的性能时,必须注意以线程安全方式调用控件。
示例访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。
.NET Framework 有助于在以非线程安全方式访问控件时检测到这一问题。在调试器中运行应用程序时,如果创建某控件的线程之外的其他线程试图调用该控件,则调试器会引发一个 InvalidOperationExceptio
此异常在调试期间和运行时的某些情况下可靠地发生。强烈建议您在显示此错误信息时修复此问题。在调试以 .NET Framework 2.0 版之前的 .NET Framework 编写的应用程序时,可能会出现此异常。
可以通过将 CheckForIllegalCrossThre
- C#多线程编程时遇到跨线程访问异常的处理方法
- JAVA多线程——线程运行时异常的处理
- C# 多线程异常处理
- C#多线程的处理方法
- C# 中多线程异常的处理
- c#多线程(三):跨线程访问
- Java多线程编程7--线程中的异常处理
- 《java多线程编程核心技术》读书笔记6:线程中的异常处理
- sguap 遇到的异常以及处理方法
- 懒人的方法处理: 从不是创建控件XXX的线程访问的异常
- Java 多线程-线程异常处理
- 详解.NET多线程异常的处理方法
- C#多线程编程:线程的启动
- C#一种不安全的方法跨线程访问控件
- c#中的多线程异常处理
- C#多线程中的异常处理
- 编程异常处理方法
- 多线程编程(二)——线程结束后的处理&主服务存活方法
- ios 延时加载
- Warshell's Algorithms
- CreateFileMapping
- Struts2的模板和主题theme及自定义theme
- PHP程序员最常犯的11个MySQL错误
- C#多线程编程时遇到跨线程访问异常的处理方法
- 关于包含0长数组的结构体对齐问题(C语言 Linux_x64 GNU编译器)
- 关于汇编语言寄存器和指令操作的整理
- LeetCode 219 Contains Duplicate II
- 十进制转m进制(m<=16)
- windows下监控本机网络状况
- 移动端某些网络下域名无法解析的DNS问题
- tableView 分割线左边短15像素问题
- android中id与+id