当前位置: 代码迷 >> C# >> c# 怎么在多线程的listview里更新状态条
  详细解决方案

c# 怎么在多线程的listview里更新状态条

热度:86   发布时间:2016-05-05 02:36:48.0
c# 如何在多线程的listview里更新状态条
程序大致思路,用backgroundwork组件后台操作listview,将listview里的数据添加到数据库,同时显示状态条的进度
  //存数据到数据库
        private void button3_Click(object sender, EventArgs e)
        {

            button3.Enabled = false;//将存数据库按钮变成灰色
               if(backgroundWorker2.IsBusy)
                    {
                         return;
                    }
            backgroundWorker2.RunWorkerAsync();
           


        private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
        {
            DiaoYong();
        }

  private void DiaoYong()//调用数据存储函数
        {
            if (listView1.InvokeRequired==false)
            {
                SaveDataToDb();
            }
                else
            {
               SaveDataToDb_delegate savedelegate = new SaveDataToDb_delegate(SaveDataToDb);
               listView1.Invoke(savedelegate);
             }
        }

        
   private void SaveDataToDb()//数据存储函数
        {
       //     ............
   //保存listview的数据到数据库
                        for (int i = 0; i < listView1.Items.Count; i++)
                        {

                        int per = (i / listView1.Items.Count) * 100;
                      backgroundWorker2.ReportProgress(per);
              //        ....................
                       }

        }

    private void backgroundWorker2_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
           
        progressBar1.Value = e.ProgressPercentage;
                    
        }


/////上面红色的代码如何改写
还有就是这样运行,界面也还是假死的,该怎么解决?

在线等,麻烦各位大大了。









------解决思路----------------------
SaveDataToDb这个函数直接调就行了
------解决思路----------------------
会不会有跨线程问题呢,好像还是楼上帮我解决的
  相关解决方案