C#中错误:线程间操作无效,从不是创建控件的线程访问它。
一、原因分析
跨线程调用控件会出现这个错误的原因是因为:.NET禁止了跨线程调用控件, 否则谁都可以操作控件,最后可能造成错误。 所以不是在创建控件所在的线程内调用就会发生这样的错误。
二、解决办法
方法1:设置CheckForIllegalCrossThreadCalls =false 是能去掉这个检查的,但是这不是标准的作法.
方法2:定义一个委托(delegate),委托(delegate)可以将参数与方法传递给控件所在的线程,并由控件所在的线程执行,通过Invoke来调用,这样可以完美的解决此类问题。
Action action = () =>{TimeBox.Text = TimeString;ResultBox.Text = hv_ResultStr;DisplayImageHalconWindow(AcqImage, GrayImage);DisplayImageHalconWindow(ThresholdImage, MeanImage);};Invoke(action);
三、总结
在控件的线程中遇到阻塞时可以通过创建另一个线程来解决界面的阻塞问题,例:new Thread(ImageDealThread).Start();将控件所需要处理的事件封装到一个函数里面,通过线程进行调用,跨线程访问控件可以通过定义一个委托(delegate)来将参数与方法传递给控件所在的线程,再通过Invoke来调用。
错误之处,欢迎大家指出!
C#中错误:线程间操作无效,从不是创建控件的线程访问它。相关推荐
- 线程间操作无效: 从不是创建控件的线程访问它。
private void button1_Click(object sender, EventArgs e){//报错:从不是创建控件的线程访问它Thread t = new Thread(() =& ...
- 黄聪:BackGroundWorker解决“线程间操作无效: 从不是创建控件的线程访问它” (C# VS2008)...
在编程中经常会遇到在一个按钮中执行复杂操作,并将复杂操作最后返回的值加入一个ListView或ComboBox中候选.这个时候程序会卡,当程序员将这些卡代码放进线程(Thread)中后发现当对控件操作 ...
- 【转】“线程间操作无效: 从不是创建控件的线程访问它”
经典解决"线程间操作无效: 从不是创建控件的线程访问它" 在编程中经常会遇到在一个按钮中执行复杂操作,并将复杂操作最后返回的值加入一个ListView或ComboBox中候选.这个 ...
- 线程间操作无效: 从不是创建控件的线程访问它
转自原文 线程间操作无效: 从不是创建控件的线程访问它. using System; using System.Collections.Generic; using System.ComponentM ...
- c#报错 :System . Invalid Operation Exception:“线程间操作无效: 从不是创建控件的线程访问它
一.问题来源 跨线程操作时会报错:System.InvalidOperationException:"线程间操作无效: 从不是创建控件的线程访问它. 二.问题代码 using System; ...
- 线程间操作无效,从不是创建控件的线程访问它。
最近在开发项目时用到了操作线程的问题,在新线程中写入了操作控件的代码如: this.btnToolUpload.Enabled = true; 但是在线程执行过程中,当执行到这段代码时提示:" ...
- C# WinForm 线程间操作无效: 从不是创建控件的线程访问它的解决办法
.net2后是不能跨线程访问控件的.,窗体上的控件是当前线程创建的,当用户异步执行一个方法:在该方法中给窗体上的控件赋值,记住:当执行一个异步委托的时候,其实 就是开了一个线程去执行那个方法,这样就会 ...
- c# 线程间操作无效: 从不是创建控件“”的线程访问它,用托管来解决
如果代码是在VS2003中的话应该不会抛出这个异常,只有在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了保证线程安全以及提高代码的 ...
- C#线程间操作无效: 从不是创建控件 XX 的线程访问它
转自:http://www.arasplm.net/index.php/zh/community/myblog/c-xx-.html 前些天做的要使用到线程的项目,现在和大家分享一下感受! 以下面小列 ...
- 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析...
最近,在做一个使用线程控制下载文件的小程序(使用进度条控件显示下载进度)时,遇到这样的问题, 错误显示: 未处理的"System.InvalidOperationException" ...
最新文章
- 一篇不一样的docker原理解析 提高篇
- Modify text in webclient ui - persistent mode
- 【ASP.NET Web API2】初识Web API
- 学霸真的比学渣更讨女孩子欢心吗?
- 现身说法“好奇心害死人啊”
- 1086: [SCOI2005]王室联邦
- akcms在模板文件中书写{php},在模版中灵活处理变量的4种方法
- 英特尔贡献基于 Kubernetes 分布式深度学习平台:Nauta
- luoguP3912 素数个数
- flash字体库打印
- Casbin荣获2021年度“科创中国”开源创新榜优秀开源产品
- 苹果id无法登陆_教你在iPhone上如何注册 ID帐户,并注意使用事项
- IReader Silverlight电子阅读器介绍开源项目
- 怎样批量修改图片尺寸?
- 《异度神剑2》与柏拉图的精神世界略考(上)
- 解决Github下载速度慢的问题
- 程序员猝死率高,我身体不好又想高薪,怎么办?
- Reservior Sampling(蓄水池采样) in Data Streams
- minigui[基础篇][11]—— 图标
- 又一个程序猿的奋斗史——第一章 初入职场
热门文章
- matlab 神经网络 ANN 分类
- 想进大厂, Jira 管理平台你会用么?
- 阿里云配置https,配置SSL证书
- (python)map,list,set删除元素
- 支持动图、一键生成,基于 React 的开源像素绘画应用 —— Pixel Art to CSS
- python多元非线性回归_利用Python进行数据分析之多元线性回归案例
- html网页设计滚动条怎么设置,css怎么设置滚动条?
- 基于javaweb的超市进销存系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)
- VMware创建Win10操作系统虚拟机
- Graphite监控上手指南