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开线程,避免页面假死的更多相关文章

  1. WPF非UI线程访问网络资源造成页面假死现象

    公司内部一个项目是用WPF作为GUI 访问web接口的形式获取数据, 但是由于数据量比较大,也没做分页,于是就需要一个loading的控件,网上查了很多资料但都比较浅.这里完成需求后,总结一下. 首先 ...

  2. WinForm查询大数据界面假死,使用异步调用解决

    用DataGridView无分页绑定一个几千条数据的查询,查询的时候界面直接卡死十几秒,用户体验非常不好,因此用异步操作解决界面卡死的问题原本场景:点击[查询]后,界面直接卡死优化场景:点击[查询]后 ...

  3. 谈.Net委托与线程——解决窗体假死

    转自:http://www.cnblogs.com/smartls/archive/2011/04/08/2008981.html#2457370   引言 在之前的<创建无阻塞的异步调用> ...

  4. winform程序内存不足或假死的问题

    最近一直在写一个winform程序,对各类文档文件,以及压缩包的内容进行关键字检测. 模型出来之后,执行了一下,发现连续测试后,会有内存不足的问题,导致程序面假死.脑袋懵逼了两天. 回头看我的变量容器 ...

  5. 导出excel页面假死

    如果是asp.net页面 public override void VerifyRenderingInServerForm(Control control)    {} 如果是Sharepoint w ...

  6. WinForm多线程+委托防止界面假死

    当有大量数据需要计算.显示在界面或者调用sleep函数时,容易导致界面卡死,可以采用多线程加委托的方法解决 using System; using System.Collections.Generic ...

  7. C# Winform 窗体界面”假死”后台线程阻塞 解决办法–BeginInvoke

    原文:C# Winform 窗体界面"假死"后台线程阻塞 解决办法–BeginInvoke 这个方法可以用在任何后台任务耗时较长,造成界面“假死”界面控件不更新的情况. 比如要要执 ...

  8. C# winform窗体假死

    C#  winform窗体假死 我们经常会遇到当执行一个比较大的函数时,窗体会出现假死的现象,给用户的体验不是很好,于是我们遇到了问题,那么就必须解决,我们该如何解决呢,首先在自己的脑里画个问号,接下 ...

  9. WinForm程序界面假死,寻求完美解决方案

    故事的开端是这样的,小白是一个程序员,他确实也是一个小白,目前还在程序员发展的道路上,兢兢业业的小心求学. 有一天,小白接到一个任务,完成一个Winform程序,附加一个功能就是可以读IC卡. 小白终 ...

随机推荐

  1. Java线程同步之一--AQS

    Java线程同步之一--AQS 线程同步是指两个并发执行的线程在同一时间不同时执行某一部分的程序.同步问题在生活中也很常见,就比如在麦当劳点餐,假设只有一个服务员能够提供点餐服务.每个服务员在同一时刻 ...

  2. C#编写Windows 服务

    C#编写Windows 服务 Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时 ...

  3. TaintDroid:智能手机监控实时隐私信息流跟踪系统(三)

    4.3   原生代码标记传播 Native 代码是不受TaintDroid监控的.理想情况下,我们获得了相同的传播语义当使用相同的解释副本时.因此,为了精确的在Java层进行污点监控,我们定义了两个必 ...

  4. SpringAOP导致@Autowired依赖注入失败

    之前用springAOP做了个操作日志记录,这次在往其他类上使用的时候,service一直注入失败,找了网上好多内容,发现大家都有类似的情况出现,但是又和自己的情况不太符合.后来总结自己的情况发现:方 ...

  5. jq向webApi提交post json数据

    在页面想webApi post json数据的时候,发现webapi不能直接以json的方式接受数据(注:我是没有发现一个很好的方式来post json数据的);但是可以以数据结构的方式传递: 如下: ...

  6. Windows server 2008 r2上安装MySQL

    用MSI安装包安装 根据自己的操作系统下载对应的32位或64位安装包.按如下步骤操作: MySQL数据库官网的下载地址http://dev.mysql.com/downloads/mysql,第一步: ...

  7. hadoop端口配置指南

    获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知道这些配置文件有 ...

  8. jQuery的css

    1.css(name|pro|[,val|fn]) 访问匹配元素的样式属性. 参数name 描述: 取得第一个段落的color样式属性的值. $("p").css("co ...

  9. 关于web多标签多条件筛选的思考以及缓存的正确使用方法(上)

    做项目的过程中,发现一次远程链接数据库的耗时大概是300ms~400ms,切身体会到了前辈们经常说的减少链接的重要性,用了缓存后页面的打开时间从1.5s减少到400ms 前提: 那么来说一说正题,we ...

  10. java中常遇到的问题

    一.乱码问题 =========================================================================================== 方 ...