线程间操作无效: 从不是创建控件“label1”的线程访问它。C#定时器
来源:互联网 发布:奥运圣火 知乎 编辑:程序博客网 时间:2024/06/06 13:57
线程间操作无效: 从不是创建控件“label1”的线程访问它。(线程异步委托操作:http://www.codeproject.com/Articles/37642/Avoiding-InvokeRequired )
我在使用线程操作winfrom控件对象的时候报错,后来才发现问题所在:多线程中直接调用界面控件的方法是错误的做法,Invoke 和 BeginInvoke 就是为了解决这个问题而出现的,使你在多线程中安全的更新界面显示
使用委托的时候是使用 Invoke 方法访问主线程程序,实现修改赋值给控件。
//解决无法访问已释放的资源对象 把使用的元素的Parent赋值为null
//定时器 private void button2_Click(object sender, EventArgs e) { System.Timers.Timer t = new System.Timers.Timer(100);//实例化Timer类,设置间隔时间为10000毫秒;t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;if (this.IsDisposed){ t.Stop();} } //定义线程调用的委托 public delegate void SetLabelDelegate(); //定时器实现的方法 public void theout(object source, System.Timers.ElapsedEventArgs e) { Thread th = new Thread(new ThreadStart(SetLab)); th.Start(); } //使用Invoke访问主线程元素 public void SetLab() { if(label1.InvokeRequired) { if (!label1.IsDisposed)//没有被释放,即关闭了窗体 { // 这里会报错,无法访问已释放的对象 请在关闭窗体时加:this.label1.Parent = null; //try //{ label1.Invoke(new SetLabelDelegate(SetLabeDo)); //} //catch (Exception ex) //{ //} } else { } } } //解决无法访问已释放的资源对象 把使用的元素的Parent赋值为null private void Form1_FormClosing(object sender, FormClosingEventArgs e) { this.label1.Parent = null; //解决在 无法访问已释放的对象 }
- 线程间操作无效: 从不是创建控件“label1”的线程访问它。C#定时器
- 线程间操作无效: 从不是创建控件“label1”的线程访问它。
- 从不是创建控件“label1”的线程访问它。
- c#线程问题:线程间操作无效:从不是创建控件 的线程访问它
- C# 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- c#关于“线程间操作无效: 从不是创建控件的线程访问它”的问题
- c# 线程间操作无效: 从不是创建控件“FormMain”的线程访问它
- C#多线程问题:线程间操作无效: 从不是创建控件“label4”的线程访问它
- BackGroundWorker解决“线程间操作无效: 从不是创建控件的线程访问它” (C# VS2008)
- C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- c# 线程间操作无效: 从不是创建控件“0”的线程访问它
- C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- c# 线程间操作无效,从不是创建控件的线程访问了它
- c# 线程间操作无效: 从不是创建控件“textBox1”的线程访问它。解决方法
- 【转】C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- C#中线程间操作无效: 从不是创建控件 txtBOX 的线程访问它。
- C#错误---线程间操作无效: 从不是创建控件"Form1"的线程访问它.
- C# 线程间操作无效: 从不是创建控件“receivemsg”的线程访问它。
- unix下各种包安装方法备忘
- node.js安装
- 改善C#程序的建议2:C#中dynamic的正确用法
- 字符串中连续多个空格合并成一个空格
- Axis2(7):将Spring的装配JavaBean发布成WebService
- 线程间操作无效: 从不是创建控件“label1”的线程访问它。C#定时器
- 模拟Hibernate框架的小demo
- 某大型银行深化系统之一:平台技术
- Axis2(6):跨服务会话(Session)管理
- 黑马程序员--第十四天:集合框架
- 修改python默认的字符编码为utf-8
- 在Linux中利用mmap模拟Windows的VirtualAlloc
- onvif 客户端的发现
- Linux经典书籍推荐