zoukankan      html  css  js  c++  java
  • 在多线程里查询数据库并填充dataGrid(原创)

            在查询大数据量时,窗体界面会不动,“正在查询...”的提示也不能显示。所以打算用多线程来实现,
    可是当在线程里面执行到 this.dataGridDF.DataSource=dt.DefaultView;填充数据
    时却提示报错,说什么该线程不能调用主线程创建的控件等等。
    后来查了许多资料,终于搞定。可以在查询数据库时操作别的了,“正在查询...”的提示也显示了。
     
    //或者在前面用一个线程查询,在线程里调用dataGrid.BeginInvoke(异步方法)来单独填充
     
      public delegate void myDelegate();
      DataTable dt;
     
      private void btnDianJia_Click(object sender, System.EventArgs e)
      {
       try
       {
        mythread = new Thread(new ThreadStart(ThreadWork));
        mythread.Start();    
       }
       catch(System.Exception ex)
       {
        MessageBox.Show(this,ex.Message,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
       }   
      }
     
      void ThreadWork()
      {
       this.dataGridDJ.CaptionText="正在查询电价数据...";
       mf.statusBarPanel1.Text="正在查询电价数据...";
       this.Cursor=Cursors.WaitCursor;
     

       string shijian=this.dateTimeDianJia.DateValue;
       DateTime today=DateTime.Today;
       string mingcheng=this.txtMingCheng.Text;
       string leibie=this.cmbBoxLiebie_DJ.SelectedValue.ToString();
       PowerWeb.BLL.DianFeiDianJia.DianJia dj=new PowerWeb.BLL.DianFeiDianJia.DianJia();
     
       if(shijian==today.ToString("yyyyMM"))
       {
        dt=dj.GetList(leibie,mingcheng).Tables[0];
       }
       else
       {
        dt=dj.GetListOld(leibie,mingcheng,shijian).Tables[0];
       }
       this.dataGridDJ.CaptionText=shijian+"电价信息 (共计条"+dt.Rows.Count.ToString()+"记录)";
     
       dataGridDJ.BeginInvoke(new myDelegate(FillData));//异步调用(来填充)
       
       this.Cursor=Cursors.Default;
       mf.statusBarPanel1.Text="查询结束";
      }
      
      private void FillData()
      {
       this.dataGridDJ.DataSource=dt.DefaultView;
      }
     
  • 相关阅读:
    Rman-10038: Database Session For Channel D1 Terminated Unexpectedly
    MySQL从入门到项目实践 pdf下载
    Oracle_优化器使用(oracle11g)
    当sqlserver启用sa账户时,出现Microsoft SQL Server 错误代号: 15535 解决方法 (转)
    sqlserver 如何分析“死锁调度程序”转储?
    AtCoder Beginner Contest 213
    LOJ
    [学习笔记] 计算几何
    [COCI 2009-2010 #6] XOR
    BZOJ
  • 原文地址:https://www.cnblogs.com/ltp/p/289683.html
Copyright © 2011-2022 走看看