线程间操作无效: 从不是创建控件“listBox1”的线程访问它
在多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,如果需要访问窗口中的控件,可以在窗口构造函数中将CheckForIllegalCrossThreadCalls设置为 false
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
}
也可以针对某一控件进行设置,例如:
TextBox.CheckForIllegalCrossThreadCalls = false;
MSDN说明:
如何:对 Windows 窗体控件进行线程安全调用
使用多线程提高 Windows 窗体应用程序的性能时,必须注意以线程安全方式调用控件。
示例
访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。
.NET Framework 有助于在以非线程安全方式访问控件时检测到这一问题。在调试器中运行应用程序时,如果创建某控件的线程之外的其他线程试图调用该控件,则调试器会引发一个 InvalidOperationException,并提示消息:“从不是创建控件 control name 的线程访问它。”
此异常在调试期间和运行时的某些情况下可靠地发生。强烈建议您在显示此错误信息时修复此问题。在调试以 .NET Framework 2.0 版之前的 .NET Framework 编写的应用程序时,可能会出现此异常。
可以通过将 CheckForIllegalCrossThreadCalls 属性的值设置为 false 来禁用此异常。这会使控件以与在 Visual Studio 2003 下相同的方式运行。
线程间操作无效: 从不是创建控件“listBox1”的线程访问它相关推荐
- C#线程间操作无效: 从不是创建控件 XX 的线程访问它
转自:http://www.arasplm.net/index.php/zh/community/myblog/c-xx-.html 前些天做的要使用到线程的项目,现在和大家分享一下感受! 以下面小列 ...
- System.InvalidOperationException:“线程间操作无效: 从不是创建控件“txtPortName02”的线程访问它。”...
"System.InvalidOperationException"类型的未经处理的异常在 System.Windows.Forms.dll 中发生 其他信息: 线程间操作无效: ...
- C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它...
C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件"Form1"的线程访问它 网上的代码都比较复杂,还是这个简单 见代码, 简易解决办法: 主窗体代码 usin ...
- C#中线程间操作无效: 从不是创建控件 txtBOX 的线程访问它
delegate void 委托名(方法名); void 方法名() { if(txtBox.invokeRequered) { 委托名 d=new 委托名(); txtBox.invoke(d); ...
- System.InvalidOperationException:“线程间操作无效: 从不是创建控件“label1”的线程访问它。”
新手在编程时,会遇到跨线程报警.(如用按键去修改textbox数据会报错) 掩耳盗铃的做法是:Control.CheckForIllegalCrossThreadCalls = false; 正确做法 ...
- 线程间操作无效: 从不是创建控件“progressBar1”的线程访问它。
在窗体 load 加入 private void MailDesktop_Load(object sender, EventArgs e) { Control.CheckForIl ...
- 线程间操作无效: 从不是创建控件“button2”的线程访问它
在项目中经常遇到类似的问题,如何解决呢,报错的方法中添加 Control.CheckForIllegalCrossThreadCalls = false; 就可以解决了. 转载于:https://w ...
- 线程间操作无效,从不是创建控件的线程访问它。
最近在开发项目时用到了操作线程的问题,在新线程中写入了操作控件的代码如: this.btnToolUpload.Enabled = true; 但是在线程执行过程中,当执行到这段代码时提示:" ...
- 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析...
最近,在做一个使用线程控制下载文件的小程序(使用进度条控件显示下载进度)时,遇到这样的问题, 错误显示: 未处理的"System.InvalidOperationException" ...
- 黄聪:BackGroundWorker解决“线程间操作无效: 从不是创建控件的线程访问它” (C# VS2008)...
在编程中经常会遇到在一个按钮中执行复杂操作,并将复杂操作最后返回的值加入一个ListView或ComboBox中候选.这个时候程序会卡,当程序员将这些卡代码放进线程(Thread)中后发现当对控件操作 ...
最新文章
- 笔记本电脑字母键盘总是打出数字_笔记本电脑,这些情况都是键盘坏了,换了就能好...
- hibernate xml配置文件
- linux如何删除符号链接文件夹,在Linux中怎样移除(删除)符号链接
- pyinstaller打包python程序的常见问题
- Web 前端——项目文件夹命名规范
- LVM---基本创建和使用
- Duilib实现圆形头像控件
- java正则表达式 分词_[Java]使用正则表达式实现分词
- 前端—每天5道面试题(十一)
- 忽略证书_中专考生注意!忽略这一点,四科全过也拿不到执业药师证书!
- yaahp层次分析法(文末含破解版软件)
- 调节效应检验(一):线性回归分析
- 全面升级,淘宝/天猫api接口大全
- 【C语言】C语言实现strcmp库函数
- linux下QT发布程序双击打不开解决方法
- SQL Server 端口映射访问方法
- 单道批-多道批-分时-实时
- 请各位大佬看看关于Scrapy ImagesPipeline对图片进行爬取无法存入本地的问题
- Oracle存储过程取当天为当年的第几周(自然周),以及当年总周数
- Mobl——用于创建HTML移动应用程序的新DSL