在多线程里查询数据库并填充dataGrid(原创)

原创 2005年05月25日 17:29:00
在查询大数据量时,窗体界面会不动,“正在查询...”的提示也不能显示。所以打算用多线程来实现,
可是当在线程里面执行到 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;
  }
 

多线程操作UI控件——DataGridView假死现象

在多线程编程中,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常。这是微软为了保证线程安全以及提高代码的效率所做的改进,但是也给大家带来很多不便。  今天我就遇到了一个类...

java多线程查询数据库

  • 2017年12月04日 13:38
  • 2KB
  • 下载

ASP.NET温故而知新学习系列之ASP.NET多线程编程—多线程查询数据库记录

一:前言   二:多线程查询数据库记录实例   一:前言   . 我们假设数据库里有500条记录,每条记录比作一个金条,那就是有500个金条,一个线程比作一个人,一个人取一个金条放置到自己的筐子...
  • ArmyFai
  • ArmyFai
  • 2012年08月27日 13:15
  • 446

【原创】SQL Server中查询数据库及表的信息语句

/* -- 本文件主要是汇总了 Microsoft SQL Server 中有关数据库与表的相关信息查询语句。 -- 下面的查询语句中一般给出两种查询方法, -- A方法访问系统表,适应于...
  • tjs_125
  • tjs_125
  • 2012年04月25日 23:22
  • 248

c#多线程快速显示多个图片,原创

  • 2009年06月15日 16:34
  • 4.78MB
  • 下载

【原创】探讨kafka的分区数与多线程消费

若要转载,请标明出处,谢谢! http://raising.iteye.com/blog/2252456 =============================================...

【原创】C# 多线程采集工具(使用 HtmlAgilityPack 工具)

我们平时或多或少的都需要采集一些网络上面的信息,当时采集的方法会有很多种,为了更高效的采集数据,我们基本上都要使用多线程,采集下来内容,最关键的还是需要分析网页内容,我们可以使用正则来分析网页中的内容...

基于多线程和SOCKET的聊天室(原创附源码)【没有控件的ASP.NET】

主要功能   思路:所有的客户端操作都由服务端向其它客户端转达,客户端之间除了在文件直接传送时进行了交互(发送和接受发送也经过服务端),其它操作都经过服务端。   服务端:开启服务/关闭/在线管理...

浅谈Socket长连+多线程[原创,欢迎指点]

前戏        【PS:原文手打,转载说明出处】   【PS:博主自认为适用于云平台设备管控,且适用于IM主控】   好久没来了,13年时还想着多写一些博客,这都17年过年,年前也写一...

40多个Java多线程问题的原创总结

学习JavaWeb多线程是十分重要的一块,前两天网易笔试就问到了乐观锁,悲观锁,自旋锁甚至是一道大题! 多线程的文章很多,但这篇文章原创者的态度值得我学习,他写道“我不能保证写的每个地方都是对的,但是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在多线程里查询数据库并填充dataGrid(原创)
举报原因:
原因补充:

(最多只允许输入30个字)