日期:2014-05-19  浏览次数:20434 次

ProcessBar的一个很头疼的问题
使用ProcessBar时,我有一个非常复杂的循环,控制ProcessBar的value,但是那个程序有些过于复杂了,导致占用的CPU过高,因此ProcessBar就始终停在了一个值上,一直到循环结束,再继续运行。这样的问题怎样解决?不但循环可以正常同时ProcessBar也可以很流畅的运行?

------解决方案--------------------
是WinForm?
还是Web上的?

是WinForm的好说了,在循环中用Application.DoEvents()就是了.
Web的,不知道:)
------解决方案--------------------
重新启动一个线程处理那个循环..
------解决方案--------------------
你在web上用progressbar 有这控件吗
------解决方案--------------------
一个变量来存放要更改的Value的值(int val),然后用一个新的线程对你要进行的操作进行运算,例如调用方法A,然后方法A就改变val的值,然后另外一个Timer每秒钟十次地对ProcessBar.Value进行刷新(processBar1.Value=val;),如果这个过程还需要有开始和结束的标志,还可以声明一个bool变量,线程开始之前它为false,表示正在进行运算,而方法A在最后结束的时候将那个bool改为true,这个时候Timer也就可以根据它的值进行适当地调整

int val;//存放要更改的value的值
bool finished=true;//是否正在进行
Thread t;//连接到要进行的运算,对val和finished进行更改
Timer timer;//每秒进行10次根据val和finished的值进行适当地调整

Timer的使用十分简单,不知道你会不会用Thread(位于System.Threading)

Thread t=new Thread(new StartInfo(MethodName));
t.Start();//启动线程
其中MethodName是一个方法的名字,那个方法必须是没有返回,没有参数的方法