在多线程程序中,新创建的线程不能访问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”的线程访问它相关推荐

  1. C#线程间操作无效: 从不是创建控件 XX 的线程访问它

    转自:http://www.arasplm.net/index.php/zh/community/myblog/c-xx-.html 前些天做的要使用到线程的项目,现在和大家分享一下感受! 以下面小列 ...

  2. System.InvalidOperationException:“线程间操作无效: 从不是创建控件“txtPortName02”的线程访问它。”...

    "System.InvalidOperationException"类型的未经处理的异常在 System.Windows.Forms.dll 中发生 其他信息: 线程间操作无效: ...

  3. C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它...

    C# 委托 / 跨线程访问UI /  线程间操作无效: 从不是创建控件"Form1"的线程访问它 网上的代码都比较复杂,还是这个简单 见代码, 简易解决办法: 主窗体代码 usin ...

  4. C#中线程间操作无效: 从不是创建控件 txtBOX 的线程访问它

    delegate void 委托名(方法名); void 方法名() { if(txtBox.invokeRequered) { 委托名 d=new 委托名(); txtBox.invoke(d); ...

  5. System.InvalidOperationException:“线程间操作无效: 从不是创建控件“label1”的线程访问它。”

    新手在编程时,会遇到跨线程报警.(如用按键去修改textbox数据会报错) 掩耳盗铃的做法是:Control.CheckForIllegalCrossThreadCalls = false; 正确做法 ...

  6. 线程间操作无效: 从不是创建控件“progressBar1”的线程访问它。

    在窗体   load   加入 private void MailDesktop_Load(object sender, EventArgs e) {       Control.CheckForIl ...

  7. 线程间操作无效: 从不是创建控件“button2”的线程访问它

    在项目中经常遇到类似的问题,如何解决呢,报错的方法中添加  Control.CheckForIllegalCrossThreadCalls = false; 就可以解决了. 转载于:https://w ...

  8. 线程间操作无效,从不是创建控件的线程访问它。

    最近在开发项目时用到了操作线程的问题,在新线程中写入了操作控件的代码如: this.btnToolUpload.Enabled = true; 但是在线程执行过程中,当执行到这段代码时提示:" ...

  9. 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析...

    最近,在做一个使用线程控制下载文件的小程序(使用进度条控件显示下载进度)时,遇到这样的问题, 错误显示: 未处理的"System.InvalidOperationException" ...

  10. 黄聪:BackGroundWorker解决“线程间操作无效: 从不是创建控件的线程访问它” (C# VS2008)...

    在编程中经常会遇到在一个按钮中执行复杂操作,并将复杂操作最后返回的值加入一个ListView或ComboBox中候选.这个时候程序会卡,当程序员将这些卡代码放进线程(Thread)中后发现当对控件操作 ...

最新文章

  1. 笔记本电脑字母键盘总是打出数字_笔记本电脑,这些情况都是键盘坏了,换了就能好...
  2. hibernate xml配置文件
  3. linux如何删除符号链接文件夹,在Linux中怎样移除(删除)符号链接
  4. pyinstaller打包python程序的常见问题
  5. Web 前端——项目文件夹命名规范
  6. LVM---基本创建和使用
  7. Duilib实现圆形头像控件
  8. java正则表达式 分词_[Java]使用正则表达式实现分词
  9. 前端—每天5道面试题(十一)
  10. 忽略证书_中专考生注意!忽略这一点,四科全过也拿不到执业药师证书!
  11. yaahp层次分析法(文末含破解版软件)
  12. 调节效应检验(一):线性回归分析
  13. 全面升级,淘宝/天猫api接口大全
  14. 【C语言】C语言实现strcmp库函数
  15. linux下QT发布程序双击打不开解决方法
  16. SQL Server 端口映射访问方法
  17. 单道批-多道批-分时-实时
  18. 请各位大佬看看关于Scrapy ImagesPipeline对图片进行爬取无法存入本地的问题
  19. Oracle存储过程取当天为当年的第几周(自然周),以及当年总周数
  20. Mobl——用于创建HTML移动应用程序的新DSL

热门文章

  1. 美国当地时间4月17日中国概念股收盘行情
  2. 牛客多校第三场J LRU management(双向链表)题解
  3. 2012/7/26给Extjs grid中的列自定义渲染方式
  4. Hibernate应用中Java对象的状态
  5. 利用深度学习自动补全 Python 代码,这个开源项目有点牛逼
  6. 9行自定义函数教你用Python发送电子邮件!
  7. 关于rstudio的一些快捷键
  8. mysql4ge表联表查询_【MySQL】MariaDB10.2新特性--Flashback
  9. JavaWeb学习之三层架构实例(二)
  10. 用Kotlin开发Android的Hello Kotlin!!