多线程和委托用法

在Invoke里面写的东西都是委托给主线程来操作的,也就是UI线程来操作,你在Invoke里面用了循环,也就是相当于委托给主线程(也就是UI所在的线程)做循环,当然会不动了。
跟你讲一下子线程和委托应该怎么用:

使用子线程,本来就是为了不影响主线程的操作,所以,不要在子线程中把所有事情都委托给主线程来做,你看看你的方法,子线程里面,上来就开始用this.Invoke,而且子线程的操作都在委托里面,也就是相当于子线程的所有操作都委托给主线程来操作了,这样根本没有起到子线程的作用,而你需要做的是,只有界面的操作才用委托,其他的,都不要放在委托里面。

另外,我得指出一下大家的错误,大家都太关注Thread.Sleep了
其实罪魁祸首根本不是它,而是委托使用的方式(或者说,委托使用的位置)


委托很好用,但是千万不要滥用,特别是子线程里全用委托,那多线程就只是个花架子了,都交给主线程来做了,你的子线程还有什么存在的意义呢?那么多操作,那么长时间的操作,委托给主线程来操作,UI能不死吗?
所以,委托要用对了地方,取数运算等操作(包括线程休眠),这些一定要直接写在子线程里面,不要用委托,而子线程里对界面(UI)的操作,一定要(应该说不得不)使用委托,通知主线程来操作。另外,如果子线程里面如果有委托,如果不是必须,千万不要在委托里面加循环,一定要把循环放在委托外面。还有,复杂的界面操作,需要耗时的界面操作,不要放在一个委托里面,可以拆开放在几个委托来做。每个委托最好是要做最小的事情。

http://bbs.csdn.net/topics/290085952?page=2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值