日期:2014-05-17  浏览次数:20792 次

求教:线程 进度条的实现
winform,里面不管是processBar还是BackgroundWorker,都有Maxvalue以此来判断程序执行进度。问题是如何获得某一个方法的执行时间呢?也就是Maxvalue.
小弟在网上看了好多进度条的例子,里面都是用的for循环来控制的进度条,如何把这个for循环给替换成真正运行的方法?
比如这个模拟方法:
// 执行任务 
 void RunTask( int seconds ) 
 {  
   ShowProgressDelegate showProgress =   new ShowProgressDelegate( ShowProgress ); 
   // 每 1 / 4 秒 显示进度一次  
   for( int i = 0; i < seconds * 4; i++ ) 
  {  Thread.Sleep( 250 );   
   // 显示进度条  
   this.Invoke( showProgress,   new object[] { seconds * 4, i + 1 } );  } 
 } 

真实的反应一个方法的执行进度应该怎么做?请高手指教。。

------解决方案--------------------
在方法里面你觉得可以让进度条前进一步的地方加上更新进度条的方法。
最后计算一下一共更新了多少次,那你的maxvalue就设置成多少就行了

引用:
winform,里面不管是processBar还是BackgroundWorker,都有Maxvalue以此来判断程序执行进度。问题是如何获得某一个方法的执行时间呢?也就是Maxvalue.
小弟在网上看了好多进度条的例子,里面都是用的for循环来控制的进度条,如何把这个for循环给替换成真正运行的方法?
比如这个模拟方法:
// 执行任务 
 void RunTask( int seconds ) 
 {  
   ShowProgressDelegate showProgress =   new ShowProgressDelegate( ShowProgress ); 
   // 每 1 / 4 秒 显示进度一次  
   for( int i = 0; i < seconds * 4; i++ ) 
  {  Thread.Sleep( 250 );   
   // 显示进度条  
   this.Invoke( showProgress,   new object[] { seconds * 4, i + 1 } );  } 
 } 

真实的反应一个方法的执行进度应该怎么做?请高手指教。。