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

偶的思路是这样的


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


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

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


代码如下

private void button1_Click(object sender, System.EventArgs e)
        
{
            progressBar1.Value 
= 0;

            
            progressBar1.BeginInvoke(
                
new MethodInvoker(DoSth));

            timer 
= new System.Timers.Timer();
            timer.AutoReset 
= true;
            timer.Interval 
= 200;
            timer.Elapsed 
+=new System.Timers.ElapsedEventHandler(timer_Elapsed);
            timer.Start();
         }

 
        
private void DoSth()
        
{
            
string path = "D:\\a.dot";
            Work work 
= new Work();
            work.GetFieldsValues(path);
            timer.Stop();

            
while(progressBar1.Value < progressBar1.Maximum)
                progressBar1.PerformStep();
             //这里显示已经100了
             MessageBox.Show(progressBar1.Value.ToString());
        }


        
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        
{
            
if(progressBar1.Value < progressBar1.Maximum -1)
                progressBar1.PerformStep();
        }

posted @   quitgame  阅读(2786)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示