大家说说进度显示最好的解决方案
开发环境:vs2008 wm5 c#
开发中经常遇到需要进度显示的地方,特别是移动设备,由于速度慢,为了给用户有良好的体验,此处更为重要。
我以前做的进度显示,全部在主线程中,在窗口中间显示一个进度条,由程序来改变进度并强制刷新。但这样做有几个问题:
1.如果用户切换到其它窗口,再现回到程序中,就会出现白窗口。
2.由于强制刷新,浪费在重绘界面的时间比较多,使得操作更慢了。这种情况不但存在于移动设备程序,桌面程序同样也会运行效率低下。
我想的解决方法是利用多线程。但多线程如果需要更新控件的话,必须要使用Invoke方法,但并不是最好的解决方法,在调用后,线程同样需要等待界面刷新完毕后,才会继续执行,没有提高效率。我觉得采用界面拉取线程的进度信息,自主更新要好一些,因为这样线程的工作效率几乎不会受到什么影响。但这个方法同样有个问题,由于工作是由线程完成,界面处于闲置状态,可以接收用户的操作,所以需要在线程运行的过程中,对界面进行屏蔽。但用什么方法屏蔽呢?可以在窗口最上层放一个透明控件,但我在网上查了好多资料,还是不知道怎么能写透明控件。另一个办法是在窗口前面显示一个模式窗口,这个窗口中只有一个进度控件,但在WM5中,窗口显示出来都是最大化的,同样我在网上查了好半天,也没有找到将窗口以指定大小显示的方法。
所以我想也许是我的思路有问题,特此请教有经验的各位同仁,一起讨论一下。谢谢
[解决办法]
帮顶,同样关注
我都是在主线程中,不断刷新实现的
[解决办法]
一般都是不断刷新实现的啊。
想不一直动态的刷新,可以起个Timer来更新,这样应该能减少一些更新次数吧。
暂时先不要考虑透明控件了,似乎实现起来很麻烦。
窗口不最大化显示我也没找到资料,关注!
[解决办法]
关注
[解决办法]
搞个图片显示或者直接调用手机自带的waiting图示
[解决办法]
还是多进程,比较适合进度条显示。。
如果不能准确估计需要的时间, 传统进度条 百分比方式显示,很难做好。 大多还是用循环的动画实现,
类似沙漏 。 类似飞信 的等待。
[解决办法]
你说了半天不知道你说的什么意思
进度条界面,就直接起个线程来接受数据,有了数据就刷新显示界面。这速度会有影响吗??
接受数据的时候有时间问题,但是在后台做的,根本没关系。显示的时候,处理器是在瞬间就显示出来了,根本看不到什么卡啊,延时的效果。
我觉得采用界面拉取线程的进度信息,自主更新要好一些,因为这样线程的工作效率几乎不会受到什么影响。不知道你这句是什么意思??
还有,你在有进度条的时候,还要到别的界面吗??如果这样,那肯定要起线程了,这样到了别的界面数据还是继续接受的啊。
不太明白你具体的想法。呵呵
[解决办法]
回帖是一种美德!每天回帖即可获得 10 分可用分!