博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【问题解决】线程间操作无效:从不是创建控件“textBox1”的线程访问它
阅读量:5334 次
发布时间:2019-06-15

本文共 640 字,大约阅读时间需要 2 分钟。

背景

通过一个辅助线程计算出的一个值赋给textBox1.text;

解决办法

1.直接在窗体的构造函数中添加:

System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;

此时禁用了所有的控件合法性检查。

 

2.通过代理来解决(msdn)

private delegate void SetTextCallback(string text);//在给textBox1.text赋值的地方调用以下方法即可private void SetText(string text){    // InvokeRequired需要比较调用线程ID和创建线程ID    // 如果它们不相同则返回true    if (this.textBox1.InvokeRequired)    {        SetTextCallback d = new SetTextCallback(SetText);        this.Invoke(d, new object[] { text });    }    else    {        this.textBox1.Text = text;    }}

这里主要用到了.NET中的 delegate。

关于delegate的详述,请参阅:

 

【原文参考】 

转载于:https://www.cnblogs.com/xunzhiyou/p/4931506.html

你可能感兴趣的文章
C8051开发环境
查看>>
VTKMY 3.3 VS 2010 Configuration 配置
查看>>
255. Verify Preorder Sequence in Binary Search Tree
查看>>
01_1_准备ibatis环境
查看>>
java判断网页的编码格式
查看>>
NYOJ_58最少步数(queue+BFS)
查看>>
windows中修改catalina.sh上传到linux执行报错This file is needed to run this program解决
查看>>
[fowarding]Ubuntu jsp平台使用JDBC来连接MySQL数据库
查看>>
angular学习笔记---通过angular/cli建一个新的项目
查看>>
mysql desc esc 基本命令总结
查看>>
matlab命令文档【全】
查看>>
扎瓦男孩决定编写一个酒店管理系统
查看>>
poj2138 Travel Games
查看>>
Spark概述
查看>>
iray摘抄
查看>>
蒲公英v5p%n搭建局域网后用nginx做代理的配置
查看>>
函数式编程
查看>>
JavaScript中的BOM和DOM
查看>>
bzoj 1606: [Usaco2008 Dec]Hay For Sale 购买干草
查看>>
[转]AngularJS:何时应该使用Directive、Controller、Service?
查看>>