winform开线程,避免页面假死
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Data.SqlClient;
- using System.Text.RegularExpressions;
- using System.Threading;
- using System.Globalization;
- using System.Web;
- namespace Redis_AddData
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- label1.Text = "";
- }
- int maxSize = ; //
- int minSize = ;
- int currentIndex = ;
- public static string tableName = "FA";
- private void button1_Click(object sender, EventArgs e)
- {
- button1.Enabled = false;
- Thread trs = new Thread(new ThreadStart(dofor));
- trs.IsBackground = true;
- trs.Start();
- progressBar1.Minimum = minSize;
- string sql = "select count(id) from tablea ";
- maxSize = Convert.ToInt32(databind.GetSingle(sql));
- progressBar1.Maximum = maxSize;
- }
- public void dofor()
- {
- SetLableText("数据加载中...");
- currentIndex = minSize;
- string str = "";
- string sql = "select * from tablea";
- SqlDataReader dr = databind.GetExecuteReader(sql, false);
- DataTable Mydt = attribute.GetTableSchema();
- while (dr.Read()) //读取所有记录
- {
- CompareInfo Compare = CultureInfo.InvariantCulture.CompareInfo; //设置indexof 不区分大小写
- #region 设置显示的标签进度
- SetLableText(string.Format("当前行:{0},剩余量:{1},完成比例:{2}%", currentIndex, maxSize - currentIndex,
- (Convert.ToDecimal(currentIndex - minSize) / Convert.ToDecimal(maxSize - minSize) * ).ToString("f0")));
- SetPbValue(currentIndex);
- #endregion
- ...
- this.BeginInvoke(new MethodInvoker(delegate()
- {
- button1.Enabled = false;
- textBox1.Text = str;
- }));
- }
- currentIndex++;
- }
- attribute.BulkToDB(Mydt);
- this.BeginInvoke(new MethodInvoker(delegate()
- {
- button1.Enabled = true;
- textBox1.Text = "完成";
- }));
- }
- delegate void labDelegate(string str);
- private void SetLableText(string str)
- {
- if (label1.InvokeRequired)
- {
- Invoke(new labDelegate(SetLableText), new string[] { str });
- }
- else
- {
- label1.Text = str;
- }
- }
- delegate void pbDelegate(int value);
- private void SetPbValue(int value)
- {
- if (progressBar1.InvokeRequired)
- {
- Invoke(new pbDelegate(SetPbValue), new object[] { value });
- }
- else
- {
- progressBar1.Value = value;
- }
- }
- }
- }
winform开线程,避免页面假死的更多相关文章
- WPF非UI线程访问网络资源造成页面假死现象
公司内部一个项目是用WPF作为GUI 访问web接口的形式获取数据, 但是由于数据量比较大,也没做分页,于是就需要一个loading的控件,网上查了很多资料但都比较浅.这里完成需求后,总结一下. 首先 ...
- WinForm查询大数据界面假死,使用异步调用解决
用DataGridView无分页绑定一个几千条数据的查询,查询的时候界面直接卡死十几秒,用户体验非常不好,因此用异步操作解决界面卡死的问题原本场景:点击[查询]后,界面直接卡死优化场景:点击[查询]后 ...
- 谈.Net委托与线程——解决窗体假死
转自:http://www.cnblogs.com/smartls/archive/2011/04/08/2008981.html#2457370 引言 在之前的<创建无阻塞的异步调用> ...
- winform程序内存不足或假死的问题
最近一直在写一个winform程序,对各类文档文件,以及压缩包的内容进行关键字检测. 模型出来之后,执行了一下,发现连续测试后,会有内存不足的问题,导致程序面假死.脑袋懵逼了两天. 回头看我的变量容器 ...
- 导出excel页面假死
如果是asp.net页面 public override void VerifyRenderingInServerForm(Control control) {} 如果是Sharepoint w ...
- WinForm多线程+委托防止界面假死
当有大量数据需要计算.显示在界面或者调用sleep函数时,容易导致界面卡死,可以采用多线程加委托的方法解决 using System; using System.Collections.Generic ...
- C# Winform 窗体界面”假死”后台线程阻塞 解决办法–BeginInvoke
原文:C# Winform 窗体界面"假死"后台线程阻塞 解决办法–BeginInvoke 这个方法可以用在任何后台任务耗时较长,造成界面“假死”界面控件不更新的情况. 比如要要执 ...
- C# winform窗体假死
C# winform窗体假死 我们经常会遇到当执行一个比较大的函数时,窗体会出现假死的现象,给用户的体验不是很好,于是我们遇到了问题,那么就必须解决,我们该如何解决呢,首先在自己的脑里画个问号,接下 ...
- WinForm程序界面假死,寻求完美解决方案
故事的开端是这样的,小白是一个程序员,他确实也是一个小白,目前还在程序员发展的道路上,兢兢业业的小心求学. 有一天,小白接到一个任务,完成一个Winform程序,附加一个功能就是可以读IC卡. 小白终 ...
随机推荐
- 联想E430Cwindow8系统换成win7
垃圾win8系统各种不习惯,尤其无线网络老是自己断掉,忍无可忍只能换成win7,之前换过一次,没有成功,记得是提示硬盘模式要由GPT换成MBR. 这次换系统采用了PE里直接分区,格式化所有数据,然后g ...
- hadoop集群安装
首现非常感谢 虾皮(http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html) 安装过程是参照他的<Hadoop集群(第5期 ...
- JavaScript 面向对象编程(三)如何写类和子类
在JavaScript面向对象编程(一)原型与继承和JavaScript面向对象编程(二)构造函数和类中,我们分别讨论了JavaScript中面向对象的原型和类的概念.基于这两点理论,本篇文章用一个简 ...
- 抛掉kendoUI的MultiSelect,自己实现 DropDownList MultiSelect
我们首先来看下kendoUI官方的下拉框多选: 再来看看telerik RadControls的下拉框多选: 很明显从展现形式上来看,第二种是优于第一种的,至少我是这么认为的 :-) 那我们就对Dro ...
- 方法输出C++输出斐波那契数列的几种方法
PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 定义: 斐波那契数列指的是这样一个数列:0, 1, 1, 2, 3, 5, ...
- Android插件简介
/** * @actor Steffen.D * @time 2015.02.06 * @blog http://www.cnblogs.com/steffen */ Android插件简介 Andr ...
- 【转】HTTP Response Header 的 Content-Disposition
因为听到有同事讨论JSP输出Excel文件的,就是在页面上有一个[导出]按钮,能够将查询结果导出到Excel文件让用户下载.有人说要用POI在后台生成临时的Excel文件,然后通过读取FileStre ...
- Oracle基础学习(一)常用函数
1.绝对值:abs() select abs(-2) value from dual; 2.取整函数(大):ceil() select ceil(-2.001) value from dual;(-2 ...
- 理解LinkedHashMap
转自http://uule.iteye.com/blog/1522291 1. LinkedHashMap概述: LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输 ...
- OC之OC与C的比较
1. 从编写.编译.链接的流程. 1). 创建1个.m的源文件. 2). 在这个文件中写上符合OC语法规范的源代码. 3). 编译. a. 预编译: 执行预处理代码. b. 检查语法. c. 生成目标 ...