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

关于进度条与线程的问题
最近做一个类似转移数据的程序,需要用到进度条,要求大概是这样的。
统计一段数据总量,显示在界面,共有10多段数据。开始转移数据,转移时进度条与转移的进度要一致,每转移成功一段数据,进度条就到尽头一次,直到10多段数据全部完成为止。
我现在遇到的问题是进度条还没走到尽头,就开始另一段数据转移了,感觉是程序比显示快了,看上去不那么和谐,所以我想进度条走到尽头之后,停留半秒,再开始另一段数据的转移。主要代码如下:


 
//这是线程循环里面
  private void dataMove(int i,int j)
        {
            if (this.InvokeRequired)
            {
                SetPos setpos = new SetPos(dataMove);
                this.Invoke(setpos, new object[] { i,j });
            }
            else
            {  progressBar1.Maximum = Convert.ToInt32(total); //设定进度条最大值为查询的记录数
                progressBar1.Step = Convert.ToInt32(Math.Ceiling(everycount / 5)); //进度条每次增加
                if (progress != Convert.ToDecimal(lblTotal.Text))
                {
                    progress += Convert.ToInt32(everycount);     //设置分段值
                }
                timer1.Start();
                thread.Suspend();   //挂起线程

                //执行迁移
                if (!bsERP.BL.b_productProduceScan.SaveData(trans, Convert.ToInt32(everycount), j))//如果返回false,则记录其条数
                {
                    MessageBox.Show(lblTableName.Text +"迁移失败!","系统提示");
                    trans.Rollback();