`
dawuafang
  • 浏览: 1106842 次
文章分类
社区版块
存档分类
最新评论

查询数据库的数据,是个比较费时的工作,在使用线程查询的时候显示个进度条,并允许终止查询的实现

 
阅读更多

public partial class FormThradQuery : Form
{
public delegate void PDelegate();

public delegate void myDelegate(DataTable t);

public delegate void myDelegatDoProcess();

Thread tmyThrdGetdata;

Thread tmyTrrdProcess;

/// <summary>
/// 数据获取结束标记 True 获取结束,False 未完全获取
/// </summary>
bool flagGetDataOver = false;

/// <summary>
/// 用户取消查询标记,True 取消 ,False 未取消
/// </summary>
bool flagCancel = false;

private MMS.Public.DbAccLibry.DbAccess mydbacc;

public FormThradQuery()
{
InitializeComponent();

mydbacc = new MMS.Public.DbAccLibry.DbAccess();
mydbacc.DatabaseInint(MMS.Public.DbAccLibry.DataBaseType.MsSqlServer, "Server=192.192.192.8;Database=escashsystem;User ID=sa;Password=Hy@ecSun.cn;Connect Timeout=20;Pooling=True;Min Pool Size=1;Max Pool Size=100;Persist Security Info=False;Asynchronous Processing=true;Integrated Security=false;");
}

/// <summary>
/// 查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton1_Click(object sender, EventArgs e)
{
flagCancel = false; flagGetDataOver = false;

try
{
tmyTrrdProcess = new Thread(new ThreadStart(ThreadProcess));

tmyThrdGetdata = new Thread(new ThreadStart(ThreadGetData));

tmyTrrdProcess.Start();
tmyThrdGetdata.Start();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString() + ",数据查询失败", "查询提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}

private void FillData(DataTable dt)
{
this.dataGridView1.DataSource = dt.DefaultView;
}

void ThreadProcess()
{
this.BeginInvoke(new myDelegatDoProcess(doProcess));
}
private void doProcess()
{
this.toolStripProgressBar1.Value = 0;
toolStripProgressBar1.Minimum = 0;
toolStripProgressBar1.Maximum = 100;
toolStripProgressBar1.Step = 10;
while (toolStripProgressBar1.Value < 100)
{
if (flagCancel ) { break; }
if (flagGetDataOver == true) { toolStripProgressBar1.Value = 100; break; }
if (toolStripProgressBar1.Value == 99)
{
toolStripProgressBar1.Value = 0;
}
toolStripProgressBar1.Value++;
Thread.Sleep(500);
Application.DoEvents();
}
}

void ThreadGetData()
{
this.BeginInvoke(new PDelegate(SetInfoBegin));//label 显示开始查询

//tsLabelInfo .BeginInvoke(new PDelegate(SetInfoBegin)); //label 显示开始查询

DataTable dt = mydbacc.ExecuteDataSet(CommandType.Text, "select * from ecv_spbaseinfo ").Tables[0];

if (dataGridView1.IsHandleCreated)
{
this.dataGridView1.BeginInvoke(new myDelegate(FillData), new object[] { dt }); //填充查询结果
}

//tsLabelInfo.BeginInvoke(new PDelegate(SetInfoEnd)); //label 显示查询结束

this.BeginInvoke(new PDelegate(SetInfoEnd));//label 显示查询结束

flagGetDataOver = true;
}

/// <summary>
/// 开始查询提示
/// </summary>
private void SetInfoBegin()
{
this.tsLabelInfo.Text = "正在查询数据,请稍候。。。";
}

/// <summary>
/// 查询完成提示
/// </summary>
private void SetInfoEnd()
{
this.tsLabelInfo.Text = "查询结束";
}

/// <summary>
/// 查询终止提示
/// </summary>
private void SetInfoCancel()
{
this.tsLabelInfo.Text = "查询被终止。。。";
}

/// <summary>
/// 终止查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton2_Click(object sender, EventArgs e)
{
flagCancel = true;
tmyThrdGetdata.Abort();
tmyTrrdProcess.Abort();

this.BeginInvoke(new PDelegate(SetInfoCancel));
}

private void toolStripButton3_Click(object sender, EventArgs e)
{
if (tmyThrdGetdata.IsAlive) { tmyThrdGetdata.Abort(); }
if (tmyTrrdProcess.IsAlive) { tmyTrrdProcess.Abort(); }
Close();
}

}

分享到:
评论

相关推荐

    WinForm进度条的2种异步实现方式

    在WinForm中,比如一些文件传输和一些费时的操作,如果处理不好就会造成“假死”的情况,为此我们可以采用进度条进行友好提示。 BackgroundWorker类是.net 2.0里新增加的一个类,对于需要长时间操作而不需要用户长...

    C#线程锁介绍源码

    这 条是最根本的东西,开发完全线程安全的程序是件很费时费力的事情,在电子商务等涉及金融系统的案例中,许多逻辑都必须严格的线程安全,所以我们不得不牺牲 一些性能,和很多的开发时间来做这方面的工作。...

    ORACLE数据库智能化管理系统2012

    数据库状态及运行情况综合查看,使您了解ORACLE运行状况及空间、日志归档、数据文件等使用情况更直观,并可智能生成数据库热备份脚本和备份恢复方案,为您的数据库保驾护航,使您高枕无忧。 本系统可执行SQL分组语句后...

    5.4空间数据库管理系统.pdf

    5.4.1 OID OID 空间数据库的管理模式 混合管理基本思想 1 第一阶段: 两个子系统分别存储和检索空间数据与属性数据 属性数据存储在商用的RDBMS中 几何数据存储在文件系统中 两个子系统间用标识符联系起来(关键字) ...

    人事管理数据库查询系统.doc

    XXX学院《人事管理数据库查询系统》 课 程 设 计 说 明 书 姓名: 学号: 专业: 2012年5月16日 目 录 1 题目和要求 4 2 需求分析 4 2.1 选择开发平台 4 2.2 开发工具 4 2.3 硬件环境 5 2.4 系统处理数据的需求分析 ...

    图书销售管理系统数据库设计.docx

    图书销售管理系统数据库设计 数据库系统概论课程设计报告 2011年 05月 28 日 图书销售管理系统数据库设计全文共23页,当前为第1页。 目 录 图书销售管理系统数据库设计全文共23页,当前为第1页。 引 言 1 第一章 ...

    数据库优化设计方案.doc

    数据库优化方案设计 XX信息管理平台从大型数据库环境四个不同级别的调整分析入手,分析数据库平台的系 统结构和工作机理,从九个不同方面设计数据库的优化方案。 对于数据库的数据优化,主要有四个不同的调整级别,...

    数据库课程设计题目汇总.doc

    《数据库原理及技术》课程设计 一、课程设计的目的和要求 (1)培养学生理解与《数据库原理》课程相关的理论知识,学会分析实际问题的能力。 (2)培养学生运用《数据库原理》相关知识设计系统应用的思想和方法。 ...

    数据库连接池原理

    特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又...

    毕业设计,微信小程序+SSM后端+MySql开发的速达物流信息查询小程序,内含完整源代码,数据库脚本,任务书,论文答辩,视频教程

    基于web的速达物流信息查询使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,其管理员速达物流信息查询信息,查看速达物流信息查询信息,管理速达物流信息查询信息...

    数据库课程设计---投票系统

    明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。 1.2项目背景 由于文件多,种类多,文件创建...

    毕业设计,微信小程序+SSM后端+MySql开发的即时空教室查询小程序,内含完整源代码,数据库脚本,论文视频,视频教程

    即时空教室查询小程序使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,总之,即时空教室查询小程序集中管理信息,有着保密性强,效率高,存储空间大,成本低等...

    ORACLE数据库智能化管理系统2008演示

    9. 还在为达到求某种数据值需要多表数据关联起来后得到结果重复,想去除多余行值,单独书写的SQL语句又无法解决而频繁手工操作或通过编写软件才能实现想要的结果而烦恼吗? 10. 还在为查看数据库会话情况及死锁情况...

    数据库课程设计(图书管理系统).doc

    数据 库设计是指对于一个给定的应用环境,构造优化的数据库逻辑模式和物理模式结果,并 据此建立数据库及其应用系统,使之能有效地存储和管理数据,满足应用需求,包括信 息管理要求和数据操作。信息管理要求是指在...

    数据库课程设计图书馆管理系统.doc

    一、课程设计的目的及意义 本课程设计是在学习《数据库原理》课程后,进行的一次全面的综合训练,其目的在于 加深对数据库原理的理解,掌握运用数据库应用系统开发软件的使用方法。通过此次课 程设计,将理论联系...

    数据库设计概述.pdf

    检索和管理的⾼效性原则:数据库系统的重点是对数据的管理和数据的提供,因此如何⾼效地实现"知道有什么数据、在什么地⽅、迅速 提取数据并加⼯成⽤户所要求的产品",是进⾏系统设计时考虑的⼀个主要因素。...

    数据库-餐饮管理系统.doc

    5、更新/删除员工档案信息 6、更新/删除管理员信息 数据查询 用户:前台服务员 1、查询可用房台信息 2、查询在售菜品信息 3、查询开台信息 4、查询订单信息 5、查询会员折扣信息 用户:销售统计管理员 1、查询日消费...

    空间数据库技术应用:空间数据库设计的内容.pptx

    由于设计过程比较费时,并且无法产生面向终端用户的应用,因此在很多情况下设计过程往往被忽视。然而,如果逾越设计过程,则常常会给数据库带来很大的风险,有可能建成一个粗制滥造的数据库。这种数据库无法满足当前...

    毕业设计,基于SpringBoot+Vue+MySql开发的前后端分离的体育馆使用预约平台,内含完整源代码,数据库脚本,视频教程

    如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于场地预约...

    雷速工资查询系统财政局版

    这样做,财务人员每天要接待来取工资条的员工,并且还要一个一个进行解释,费时费力。为了解决这一问题,我们开发了雷速工资查询系统财政局版。使用这套系统,员工只要在任何一台可以上网的电脑上,输入自己的用户名...

Global site tag (gtag.js) - Google Analytics