进度条C#

Mik*_*ike 2 c# winforms progress-bar

我有一个进度条来显示将歌曲加载到库中的程序的状态.

    foreach (Song s in InitializeLibrary())
    {
        Library.AddSong(s);
        pBar.Value++;
        pBar.Update();
    }
Run Code Online (Sandbox Code Playgroud)

InitializeLibrary()只是一个返回List的函数

问题是进度条在某个点(例如20%)之后停止"移动",而值仍然增加.有没有办法让它100%更新?

jas*_*nmw 9

我这样做的方法是使用BackgroundWorker组件.

使用它在后台线程上加载歌曲并将进度报告给将更新进度条的UI线程.

后台工作程序处理线程之间的所有消息传递以报告进度.

这样您就可以获得多线程的好处,而无需自己管理线程.

一个好的教程将介绍如何使用进度报告是在这里.

  • 我突然意识到,当应用程序在UI线程上进行大量"工作"时,有时屏幕不会经常重新绘制并具有"悬挂"的感觉.如果你把工作分成另一个线程,屏幕的绘画是没有问题的. (2认同)