找回密码
 注册
搜索
查看: 738|回复: 0

[讨论] 大家说说wm5进度显示最好的解决方案

[复制链接]
发表于 2009-6-23 18:41:26 | 显示全部楼层 |阅读模式
开发环境:vs2008 wm5 c#
开发中经常遇到需要进度显示的地方,特别是移动设备,由于速度慢,为了给用户有良好的体验,此处更为重要。
我以前做的进度显示,全部在主线程中,在窗口中间显示一个进度条,由程序来改变进度并强制刷新。但这样做有几个问题:
1.如果用户切换到其它窗口,再现回到程序中,就会出现白窗口。
2.由于强制刷新,浪费在重绘界面的时间比较多,使得操作更慢了。这种情况不但存在于移动设备程序,桌面程序同样也会运行效率低下。

我想的解决方法是利用多线程。但多线程如果需要更新控件的话,必须要使用Invoke方法,但并不是最好的解决方法,在调用后,线程同样需要等待界面刷新完毕后,才会继续执行,没有提高效率。我觉得采用界面拉取线程的进度信息,自主更新要好一些,因为这样线程的工作效率几乎不会受到什么影响。但这个方法同样有个问题,由于工作是由线程完成,界面处于闲置状态,可以接收用户的操作,所以需要在线程运行的过程中,对界面进行屏蔽。但用什么方法屏蔽呢?可以在窗口最上层放一个透明控件,但我在网上查了好多资料,还是不知道怎么能写透明控件。另一个办法是在窗口前面显示一个模式窗口,这个窗口中只有一个进度控件,但在WM5中,窗口显示出来都是最大化的,同样我在网上查了好半天,也没有找到将窗口以指定大小显示的方法。
所以我想也许是我的思路有问题,特此请教有经验的各位同仁,一起讨论一下。谢谢
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-23 11:11 , Processed in 0.043535 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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