作者: chujunhe1234
查看: 2433|回复: 4
打印 上一主题 下一主题

[求助] C#多线程必须加Thread.Sleep()语句么?

[复制链接]
跳转到指定楼层
楼主
chujunhe1234 发表于 2015-9-11 10:18:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查看: 2433|回复: 4
a= new Thread(new ThreadStart(delegate { ThreadMethod(); }));
a.Start();
如题,我采用这个方法开启子线程,然后在子线程中执行耗时的代码,并且调用委托来更新UI界面控件。
但是我发现一个问题就是:比如我在代码里写了往textBox里面添加一些字符串,然后后面接着执行耗时的代码。我发现只有当整个代码执行完了,textBox里才会显示添加的数据。但是如果在每条往textBox里添加数据的后面加一句Thread.Sleep()语句,就可以看到是先往textBox里添加的数据了。这点我觉得很奇怪啊,以前安卓开发也遇到过这样的事情,就是往控件里添加数据展示给用户看,如果不加Threa.Sleep()语句的话,就得等数据全部添加完毕之后才能看到,而不是添加一句显示一句,为什么啊?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播
回复 论坛版权

使用道具 举报

沙发
yhho 发表于 2015-9-11 21:56:05 | 只看该作者
本帖最后由 yhho 于 2015-9-11 21:57 编辑

委托里面textBox 赋值后
Application.DoEvents();
板凳
乔克斯 发表于 2015-9-12 15:45:36 | 只看该作者
多线程里面写耗时的代码。。操作主界面UI的时候调用主线程委托。耗时代码必须放在多线程块里。不要放到主线程委托块里面。
地板
 楼主| chujunhe1234 发表于 2015-9-14 17:44:10 | 只看该作者
yhho 发表于 2015-9-11 21:56
委托里面textBox 赋值后
Application.DoEvents();

的确有用额。。
5#
 楼主| chujunhe1234 发表于 2015-9-14 17:44:34 | 只看该作者
乔克斯 发表于 2015-9-12 15:45
多线程里面写耗时的代码。。操作主界面UI的时候调用主线程委托。耗时代码必须放在多线程块里。不要放到主线 ...

嗯,最近几天正在研究
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-4-26 23:00, Processed in 0.629749 second(s), 41 queries , Gzip On.

快速回复 返回顶部 返回列表