读书人

进度条的使用,该如何解决

发布时间: 2012-01-05 22:36:54 作者: rapoo

进度条的使用
现要对一个数据表进行备份,由于数据较多(8万条),所以计划弄一个进度条来显示备份进度,但不知道这进度条怎么用?
备份的代码被封装在业务层中,表现层就一句代码:

SystemOperation.Backup();

请问,如何使用进度条显示当前备份进度?

[解决办法]
这样你不可能知道具体的进度。
建议找到一般情况下的备份时间,比如6分钟,然后每6秒钟Increment(10),大致的指示一下。到最后一步的时候,等到Backup结束后显示100%。粗略的表示程序没有死,正在运行(这也正是progressbar的作用)。
[解决办法]
像数据库备份,这种不能准确知道需时的操作,是不需要标明进度的.因为数据库大小,设备快慢都影响到操作的时间,一般是通过显示一个不断运行的滚动条来标示,操作正在进行中。

你在窗体上拖一个ProgressBar控件,把Stype属性设置为“Marquee”,即得一个滚动条。

另外,进度条和备份操作,需要不同的线程。当然,用委托就能实现了!
[解决办法]
webform没弄过
我做过winform的,实时的不太好做,我做的是根据自定进度值执行线程变速的进度条。
用到线程的委托、多线程、计时器

这是部分代码

C# code
       private void button1_Click(object sender, EventArgs e)        {            c1 = bylProbar.Position;            btnStart.Enabled = false;            btnClose.Enabled = false;            //控制进度条速度            timer1.Interval = 600;            timer1.Start();        }      private void timer1_Tick(object sender, EventArgs e)        {            if (c1 == bylProbar.PositionMax)            {                p1 = 0;                timer1.Stop();                bylProbar.Text = "完成!";                btnClose.Enabled = true;            }            else            {                if (c1 == bylProbar.PositionMin)                {                    p1 = 1;                }                else if (c1 == 2)                {                    Thread t1 = new Thread(new ThreadStart(ThreadDBImportForums));                    t1.Start();                }                else if (c1 == 5)                {                    Thread t2 = new Thread(new ThreadStart(ThreadDBTranfer));                    t2.Start();                }                else if (c1 == 9)                {                    Thread cha = new Thread(new ThreadStart(ThreadDBImportBlog));                    cha.Start();                }            }            c1 += p1;            Application.DoEvents();            bylProbar.Text = c1.ToString() + " %";            bylProbar.Position = c1;            if (rows > 0) timer1.Interval = 20;        }     private void Form1_Load(object sender, EventArgs e)        {            bylProbar.Text = "";            bylProbar.Position = 0;                    }
[解决办法]
int b = 总数
int b1 = b;
progressBar1.Maximum = b1;
while (b > 0)
{
b = b - 1;
获取文件一条
int b2 = b + 1;


progressBar1.Value = b1 / b2;
}

读书人网 >C#

热点推荐