WinForm中多线程问题?
来源:互联网 发布:c语言do while语句 编辑:程序博客网 时间:2024/05/07 14:57
问题描述:
界面中有一TextBox控件,名为txtName,需要修改其Enabled属性值,用到了多线程+委托,但是程序报错:“线程间操作无效,不能从创建此线程之外的线程访问”,具体代码如下:
private delegate void DelegateMethod();private void SetStatus(){ this.txtName.Enabled = true; //报错,从不是创建此控件的线程访问。} public voidbtnStart_Click(object sender,EventArgs e){ DelegateMethod dm = delegate() { SetStatus(); }; if(!IsHandleCreated) { this.txtName.Invoeke(dm); } Thread thread = new Thread(new ThreadStart(dm)): thread.Start(); }
试过多种解决方法,依然未能解决问题,于是在CSDN求助,得到了解决方案,具体帖子详见:
http://bbs.csdn.net/topics/390854438?page=1#post-397941216
解决方法:
方法一:
void dm(){ this.Invoke(new Action(delegate() { this.txtName.Enabled = true; }));} Thread thread = new Thread(new ThreadStart(dm)): thread.Start();
方法二:
private void SetStatus(){ this.txtName.Invoke(new MethodInvoker(() => this.txtName.Enabled = true)); }
两种方法亲测均可行,视情况选择即可。
0 0
- WinForm中多线程问题?
- Winform的多线程问题
- c#中使用多线程访问winform中控件的问题
- c#中使用多线程访问winform中控件的问题
- 在多线程中调用WinForm
- C# winform 中数据获取与界面显示有关的多线程问题
- 解决多线程下WinForm卡死问题
- 在多线程中如何调用Winform
- 在多线程中如何调用Winform
- 在多线程中如何调用Winform
- 多线程中控制winform的控件!
- C#多线程异步访问winform中控件
- 在多线程中调用WinForm(C#) (转载)
- 在多线程中如何调用Winform
- 在多线程中如何调用Winform
- C#多线程异步访问winform中控件
- 在多线程中如何调用Winform
- c#在多线程中如何调用Winform
- POJ 1077 Eight
- #include 带“.h” 和 不带“.h” 有什么区别
- maven项目添加jar包
- 如何在LINUX/UNIX上运行PYTHON程序
- 前端知识收集
- WinForm中多线程问题?
- PPS性能测试流量测试中的以太网每秒数据包个数计算
- 值得推荐的程序员网站
- LeetCode_Word Search
- 网站项目常用JS,CSS等控件插件
- Tomcat内存设置详解
- Ubuntu 14.04 LTS + MatlabR2012a 安装
- Cocos2d-x设计模式发掘之九:委托模式
- 10个有用的Linux命令面试问题及答案