我这里有个线程,线程里面执行我的一个将Excel或者mdb文件中的大量数据导入的数据库中,因为数据多需要一个进度条,下面是写在线程函数中控制进度条的代码,点击执行按钮后 进度条是正确的 ,但是我切换一下界面 界面就死掉了 请问下如何更好的控制进度条,切换界面不会出现假死状态。真正的做到界面与线程分开progressBar1.Style = ProgressBarStyle.Blocks;
progressBar1.Maximum = dt.Rows.Count + 1;foreach (DataRow toDR in dt.Rows)
                {  //循环导入数据
                     i++;
                        progressBar1.Value = i;
}//使用线程
thr = new Thread(new ThreadStart(ThreadChange));
            thr.Start();private void ThreadChange()   
        {
            MethodInvoker In = new MethodInvoker(ImportJinDuStart);
           this.BeginInvoke(In);
        }

解决方案 »

  1.   

    progressBar1.Style = ProgressBarStyle.Blocks;
    progressBar1.Maximum = dt.Rows.Count + 1;foreach (DataRow toDR in dt.Rows)
      { //循环导入数据
      i++;
      progressBar1.Value = i;
    }把这块代码也放在线程中执行
      

  2.   

    把工作最忙的代码,放到线程中,在线程中用Invoke控制进度条
      

  3.   

    要是在线程中你(progressBar1.Value = i;)直接这样能执行???!!
      

  4.   

    progressBar1.Value = i;
    下面加一句
    Application.DoEvent();