为什么偶的进度条的Value为100了 而显示出来进度条才走到中间

偶的思路是这样的


首先开启定时器 让进度条滚动 然后用BeginInvoke启动一个耗时的操作。
定时器最多可以将滚动条滚到到 倒数第一步
耗时操作的最后才将滚动条滚到最终的位置


有些时候又很正常
有些时候就出现如标题所描述的情况?
当整个过程结束以后 进度条的Value为100了 而显示出来进度条才走到中间

同事们研究了半天 说是进度条的BUG


代码如下

None.gif private   void  button1_Click( object  sender, System.EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            progressBar1.Value 
= 0;
InBlock.gif
InBlock.gif            
InBlock.gif            progressBar1.BeginInvoke(
InBlock.gif                
new MethodInvoker(DoSth));
InBlock.gif
InBlock.gif            timer 
= new System.Timers.Timer();
InBlock.gif            timer.AutoReset 
= true;
InBlock.gif            timer.Interval 
= 200;
InBlock.gif            timer.Elapsed 
+=new System.Timers.ElapsedEventHandler(timer_Elapsed);
InBlock.gif            timer.Start();
ExpandedBlockEnd.gif         }

None.gif 
None.gif        
private   void  DoSth()
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
string path = "D:\\a.dot";
InBlock.gif            Work work 
= new Work();
InBlock.gif            work.GetFieldsValues(path);
InBlock.gif            timer.Stop();
InBlock.gif
InBlock.gif            
while(progressBar1.Value < progressBar1.Maximum)
InBlock.gif                progressBar1.PerformStep();
InBlock.gif             //这里显示已经100了
InBlock.gif             MessageBox.Show(progressBar1.Value.ToString());
ExpandedBlockEnd.gif        }

None.gif
None.gif        
private   void  timer_Elapsed( object  sender, System.Timers.ElapsedEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
if(progressBar1.Value < progressBar1.Maximum -1)
InBlock.gif                progressBar1.PerformStep();
ExpandedBlockEnd.gif        }

转载于:https://www.cnblogs.com/QuitGame/archive/2005/02/28/110173.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值