C#中线程间操作无效: 从不是创建控件 txtBOX 的线程访问它
delegate void 委托名(方法名);
void 方法名()
{
if(txtBox.invokeRequered)
{
委托名 d=new 委托名();
txtBox.invoke(d);
}
else
{
具体的执行语句
}
}
原来是存在跨线程调用控件的问题
解决方法有两种:第一是加一句话,第二是用委托。因为一句话成功了 我就没有用委托了~
1.解决方法就加了一句话
private void mycomm_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
线程开始的时候加这么一句
Control.CheckForIllegalCrossThreadCalls = false;
string str = mycomm.ReadExisting().ToString();
txtreceive.Text = txtreceive.Text + str;
}
ok 程序就运行成功了~
第二:
用委托,在05里,每个控件都有个InvokeRequired的属性~
判断一下是不是true,是的话进行Invoke操作的,完事了~
private delegate void ShowDelegate(string strshow);
public void Show(string strshow)
{
if (this.txtreceive.InvokeRequired)
{
// this.txtreceive.BeginInvoke(new ShowDelegate(Show), strshow);//这个也可以
this.txtreceive.Invoke(new ShowDelegate(Show), strshow);
}
else
{
this.txtreceive.Text += strshow;
}
}
第一种方法只是简单的将错误提示禁用了,仍然存在跨线程调用控件的问题。为此可能造成两个线程同时或者循环改变该控件的状态导致线程死锁。
Invoke方法是同步的方法,所以执行过程是有先后顺序的,所以就不会出现那个异常了 最好是用第二种方法
C#中线程间操作无效: 从不是创建控件 txtBOX 的线程访问它相关推荐
- 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 ...
- 线程间操作无效: 从不是创建控件“button2”的线程访问它
在项目中经常遇到类似的问题,如何解决呢,报错的方法中添加 Control.CheckForIllegalCrossThreadCalls = false; 就可以解决了. 转载于:https://w ...
- System.InvalidOperationException:“线程间操作无效: 从不是创建控件“label1”的线程访问它。”
新手在编程时,会遇到跨线程报警.(如用按键去修改textbox数据会报错) 掩耳盗铃的做法是:Control.CheckForIllegalCrossThreadCalls = false; 正确做法 ...
- 线程间操作无效: 从不是创建控件“progressBar1”的线程访问它。
在窗体 load 加入 private void MailDesktop_Load(object sender, EventArgs e) { Control.CheckForIl ...
- 线程间操作无效,从不是创建控件的线程访问它。
最近在开发项目时用到了操作线程的问题,在新线程中写入了操作控件的代码如: this.btnToolUpload.Enabled = true; 但是在线程执行过程中,当执行到这段代码时提示:" ...
- 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析...
最近,在做一个使用线程控制下载文件的小程序(使用进度条控件显示下载进度)时,遇到这样的问题, 错误显示: 未处理的"System.InvalidOperationException" ...
- 黄聪:BackGroundWorker解决“线程间操作无效: 从不是创建控件的线程访问它” (C# VS2008)...
在编程中经常会遇到在一个按钮中执行复杂操作,并将复杂操作最后返回的值加入一个ListView或ComboBox中候选.这个时候程序会卡,当程序员将这些卡代码放进线程(Thread)中后发现当对控件操作 ...
最新文章
- Exchange2003-2010迁移系列之十三
- asp.net mysql 读写分离_.NET Core实现分表分库、读写分离的通用 Repository功能
- 图像分割 c语言程序,OpenCV实现图像切割功能
- 浅谈Java语言中ArrayList和HashSet的区别
- linux关机_Linux系统管理:开机启动流程(一)
- SAP HR模块的基础数据表和增强配置
- VTK:可视化之ProteinRibbons
- jmeter --- 基于InfluxDBGrafana的JMeter实时性能测试数据的监控和展示
- controller属于哪一层_别急着换5G,4G手机同样值得考虑!哪几款安卓手机称得上4G机皇?...
- 子矩阵(NOIP2014 普及组第四题)
- java课程设计模拟画图_课程设计java画板模拟画图工具
- 自动化测试工具-Airtest
- 旅游网之后台管理系统
- pmp十大知识领域,49个过程的4W1H
- ARM7、ARM9、ARM11、ARM-Cortex的关系
- linux 双显卡 黑屏 amd,彻底解决AMD显卡win10开机黑屏问题
- 老兵新传 Visual Basic核心编程及通用模块开发pdf
- 计算机专业综合改革举措,数学与应用数学专业综合改革的举措.docx
- 华为工程师面试题库—通信类
- 10本Linux PDF 书籍免费分享
热门文章
- Linux命令工作中常用的总结
- php获取跳转之后的网址,php如何获得网址跳转之后的网址
- % mysql 代表_MySQL中的星号(*)和百分号(%)代表表示什么,MySQL的库名、表名、字段名、字段值是否区分大...
- 计算机微课应用报告书,【计算机专业论文】计算机专业教学中微课的应用(共4253字)...
- html表格高度适应屏幕,Table的自适应高度
- stm32温度控制按键_干货 | STM32常用功能介绍
- 又一位纯手工打造CPU的牛人,并且汇编语言实现类Unix系统,支持文件系统
- C++ 基础知识!初学者必看!
- DIY逗比的时钟,制作资料100%开源!
- php 控制304,php静态文件返回304技巧分享