遇到问题-UI界面无响应,多线程解决UI界面无响应问题
来源:互联网 发布:淘宝网如何退货 编辑:程序博客网 时间:2024/04/27 23:28
当处理过程比较复杂,或者耗时较长时,容易引起UI界面无响应.
比如我们执行一个复杂的运算,要随时在界面上显示它的结果.但是UI界面卡死了,不能随时看到运算的结果.
这种情况下 我们可以另开线程1,把运算的过程放到线程1中启动,然后用委托唤醒显示语句.
引用线程命名空间
using System.Threading;
//定义线程 private Thread workerThread1 = null; private void button3_Click(object sender, EventArgs e) {//给线程赋值,启动 workerThread1 = new Thread(new ThreadStart(make_number)); workerThread1.Start(); }//定义委托,显示函数 private delegate void setStatusDelegate(string iteration, string error); private void setStatus(string a, string b) { this.label11.Text = a.ToString(); this.label12.Text = b.ToString(); }//定义运算函数,也就是运算的过程.里面要用委托调用显示函数. private void make_number() { int a=0; int b=0; for(int i=0;i<100;i++){//用委托调用函数 this.Invoke(new setStatusDelegate(setStatus), a.ToString(), b.ToString()); a++;b=b+2; }}
为什么要用委托,而不是直接在make_number函数里 写
this.label1.text=a.tostring();
this.label2.text=b.tostring();
因为会报错,只有form窗体的线程中才能给窗体的控件赋值,线程1不能直接赋值
所以线程1中只是唤醒显示函数,显示函数仍是处于窗体线程中.
- 遇到问题-UI界面无响应,多线程解决UI界面无响应问题
- 第三章 解决UI 线程运行无响应问题
- c#非委托方式在子线程里操作UI控件(实际上运算逻辑在子线程,更新还是在主线程,解决了UI界面无响应的问题)
- directshow播放,界面无响应问题的查找
- android WebView拦截js弹窗界面无响应问题
- 版本Ui更新响应和无响应
- OnMouseWheel无响应问题
- onKeyDown无响应问题
- yum无响应问题
- C#多线程与UI响应 防界面假死
- C#多线程与UI响应 防界面假死
- C#多线程与UI响应 防界面假死 .
- 解决SSH登录无响应问题
- anr用户无响应问题的解决
- eclipse启动无响应问题的解决
- PeekMessage完美解决MFC主界面无响应
- PeekMessage完美解决MFC主界面无响应
- 在ASP.NET下使用jQuery UI下的Dialog,服务器端按钮无响应的问题。
- Regex.Split 与String.Split 使用小结
- Spring缺少aspectjweaver.jar异常
- android关于ListView(列表)
- ListView及异步加载图片问题汇总
- 20130410,微软4月10日发布9个安全补丁
- 遇到问题-UI界面无响应,多线程解决UI界面无响应问题
- android121---启动模式
- VIM: C程序员插件C.vim
- HTML基础篇
- 变量,函数的定义和声明
- 发现了个不错的批处理命令
- Nginx配置文件nginx.conf中文详解
- ARM及LPC2000学习笔记
- C语言嵌入式系统性能优化