有两种方式解决 
1.在窗体构造函数中写Control.CheckForIllegalCrossThreadCalls =false;
2.使用Invoke等委托函数。

问题原因是。net2.0以后拒绝多线程访问空间,避免空间造成死锁。以前Control.CheckForIllegalCrossThreadCalls =false;默认就是这样,现在默认为true。
如果不会好几个线程同时操作一个控件用方法1就可以。如果存在多个线程一起操作控件使用方法2

例如: this.progressBar1.Maximum = max;

改为:this.setMaxProcess(_totalFrames);

        private delegate void MyDelegate(int maxnum);private void setMaxProcess(int max){if (this.progressBar1.InvokeRequired){MyDelegate del = new MyDelegate(setMaxProcess);this.Invoke(del, new object[] { max });}elsethis.progressBar1.Maximum = max;}

转载于:https://blog.51cto.com/studybao/1638997

C# 从不是创建控件 的线程访问它相关推荐

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

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

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

    转自原文 线程间操作无效: 从不是创建控件的线程访问它. using System; using System.Collections.Generic; using System.ComponentM ...

  3. 用委托在listbox中异步显示信息,解决线程间操作无效,从不是创建控件的线程访问它...

    //创建一个委托,是为访问listbox控件服务的.public delegate void UpdateTxt(string msg);//定义一个委托变量public UpdateTxt upda ...

  4. 【转】“线程间操作无效: 从不是创建控件的线程访问它”

    经典解决"线程间操作无效: 从不是创建控件的线程访问它" 在编程中经常会遇到在一个按钮中执行复杂操作,并将复杂操作最后返回的值加入一个ListView或ComboBox中候选.这个 ...

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

    private void button1_Click(object sender, EventArgs e){//报错:从不是创建控件的线程访问它Thread t = new Thread(() =& ...

  6. c#报错 :System . Invalid Operation Exception:“线程间操作无效: 从不是创建控件的线程访问它

    一.问题来源 跨线程操作时会报错:System.InvalidOperationException:"线程间操作无效: 从不是创建控件的线程访问它. 二.问题代码 using System; ...

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

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

  8. C# WinForm 线程间操作无效: 从不是创建控件的线程访问它的解决办法

    .net2后是不能跨线程访问控件的.,窗体上的控件是当前线程创建的,当用户异步执行一个方法:在该方法中给窗体上的控件赋值,记住:当执行一个异步委托的时候,其实 就是开了一个线程去执行那个方法,这样就会 ...

  9. 线程间操作无效:从不是创建控件的线程访问它的三种方法

    访问 Windows 窗体控件本质上不是线程安全的.如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态.还可能出现其他与线程相关的 bug,包括争用情况和死锁.确保以线程安 ...

  10. c# 线程间操作无效: 从不是创建控件“”的线程访问它,用托管来解决

    如果代码是在VS2003中的话应该不会抛出这个异常,只有在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了保证线程安全以及提高代码的 ...

最新文章

  1. 优化算法 sklearn lr
  2. python 端口扫描
  3. Css3 display用法
  4. 我为什么建议你发年终奖前跳槽?
  5. Servlet 快速开始 表单中文字段
  6. 来到博客园许久,却还未开始写一篇自己的博客。从今天开始,每周都会更新自己的学习内容。...
  7. springboot集成fastDFS文件上传下载
  8. PLC通过485与单片机通讯示例
  9. vue cli 构架vux移动端模板
  10. Flowchat 流程图在Markdown中的使用(不同编辑器有细微区别)
  11. JS 格林威治时间格式(GMT)与普通时间格式的互相转换
  12. 服务器vga接显示器无信号,显示器用HDMI转VGA接口后,无信号怎么解决
  13. 一千万的股票能一天卖出吗
  14. 23位子网掩码是多少_23位子网掩码 网关计算
  15. 计算机房的网络化管理,学校计算机房的设计与管理
  16. PowerQuery操作分类3
  17. linux配置rsync排除某些目录,10个linux rsync命令排除文件/目录
  18. 申宝证券-银行股午后集体异动拉升
  19. NS2 实现有 20 个节点的 WLAN
  20. Spring Boot进阶(16):Spring Boot 如何通过Redis实现手机号验证码功能? | 超级详细,建议收藏

热门文章

  1. SparkStreaming从Kafka读取数据两种方式
  2. Cadvisor源码分析监控项
  3. Centos7无法使用ssh登陆及解决方案
  4. jQuery - 设置内容和属性
  5. Mysql VARCHAR(X) vs TEXT
  6. 比较高明的暗部提亮方法:选取暗部,滤色叠加
  7. python可分组字典
  8. SqlServer2000日志文件过大问题处理
  9. SPSiteDataQuery
  10. MM的SQLDMO- -哈哈(数据备份与恢复篇)