多线程操作(循环往listbox中添加数据)
一、先造一个窗体,其中就开始按钮,暂停按钮,以及listbox文本框
二、当点击开始的时候,数据会无限的往listbox中加,为了防止卡住和提升效率,便造了一个新的线程来执行开始操作
namespace 线程Again
{
//首先要定义一个委托(委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递)
public delegate void Weituo();//利用这个委托来用方法调用方法
public partial class Form1 : Form
{
//定义好了委托,开始定义一个线程;
private Thread therad;
//定义一个bool型的变量来存储是开始还是暂停
private bool isok=true;
//定义一个常量
private long i;
public Form1()
{
InitializeComponent();
//Control.CheckForIllegalCrossThreadCalls = false;//不要检查安全性(一般不用这句),如果有这句便不需要委托了
} private void button1_Click(object sender, EventArgs e)//开始按钮
{
button1.Enabled = false;
//当点击开始的时候,将数据一条条的添加到listbox1中,点暂停便会终止,因为是循环添加数据,一旦点开始变不会停下来,所以这便需要多线程操作,开始按钮有自己单独的线程 //首先将线程实例化出一个
therad = new Thread(new ThreadStart(Start)); //为button1按钮造一个新的线程,这样点button1的话,就会运行新造的这个线程,而不会影响到窗体的主线程
therad.IsBackground = true;//确认新造的线程后台运行
therad.Start(); } //定义一个Start函数,用来循环放数据
public void Start()
{
while (isok)//循环调用委托,改控件属性这个工作交给委托来做
{
//在循环里调用委托函数
weituo(); }
} //定义一个委托函数
public void weituo()
{ //判断一下新造的(button1)线程来访问listbox1这个控件的listBox1.InvokeRequired属性是true还是false;如果是其他的线程来访问自己的线程,则返回值是ture
if(listBox1.InvokeRequired)
{
//因为是其他的线程来访问自己的线程,所以返回值是true,既然是其他的线程来访问,为了安全,必须转回到自己的线程,这就用到了委托
Weituo x = new Weituo(weituo);//将weituo函数变成新造的线程能够调用的
this.Invoke(x);//在拥有button1控件的窗体上执行这个委托
}
else
{
listBox1.Items.Insert(,i);//一旦返回值是false,便将数据添到listbox1中
i++;
} } private void button2_Click(object sender, EventArgs e)
{
isok = false;
button1.Enabled = true;
}
}
}
三、点暂停按钮的时候停止添加数据
多线程操作(循环往listbox中添加数据)的更多相关文章
- Eclipse中java向数据库中添加数据,更新数据,删除数据
前面详细写过如何连接数据库的具体操作,下面介绍向数据库中添加数据. 注意事项:如果参考下面代码,需要 改包名,数据库名,数据库账号,密码,和数据表(数据表里面的信息) package com.ning ...
- ligerui_实际项目_003:form中添加数据,表格(grid)里面显示,最后将表格(grid)里的数据提交到servlet
实现效果: "Form"中填写数据,向本页"Grid"中添加数据,转换成Json数据提交,计算总和,Grid文本框可编辑,排序 图片效果: 总结: //disp ...
- 用PHP向数据库中添加数据
显示页面(用户可见) <body><form action="chuli.php" method="post"> //将该页面接收的数 ...
- C语言+ODBC+SQL 操作(向SQL里面添加数据)
为了节省时间,我就引用上一节的数据库的表和C语言的结构体数组,在结构体数组中添加数据,清空数据库数据. 第一步查询:SQLBindParameter函数的用法. SQLRETURN SQLBindPa ...
- c#.net循环将DataGridView中的数据赋值到Excel中,并设置样式
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel ...
- 使用MySQL Workbench建立数据库,建立新的表,向表中添加数据
使用MySQL Workbench建立数据库,建立新的表,向表中添加数据 初学数据库,记录一下所学的知识.我用的MySQL数据库,使用MySQL Workbench管理.下面简单介绍一下如何使用MyS ...
- 向数据库中添加数据,通过se16 不能添加,通过 代码可以添加的原因
1: 在向数据库中添加数据时,通过客户端se16 准备对 数据表进行添加数据,提示如下: 找了以下原因,如下: https://www.baidu.com/link?url=3yRtAfY1_9XG ...
- java向文件中添加数据---手动版日志添加
核心代码为创建多级文件夹创建 //目标文件 File file=new File(filePath); //若不存在即创建文件 if(!file.exists()) { if (!file.getPa ...
- phpStudy3——往数据库中添加数据
前言: 前边介绍了查询数据库的方法,这里介绍下往数据库中添加数据的方法. 项目需求: 用户在前端页面输入的用户名和手机号码,点击提交后后端判断手机号码是否已经存在.如果不存在,那么插入数据库到数据库, ...
随机推荐
- ios 判断空字符串
- (BOOL) isBlankString:(NSString *)string { if (string == nil || string == NULL) { return YES; } if ...
- 利用URLRewriter.dll 实现ASP.NET实现伪静态
大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访 ...
- mysql 权限 备份
mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...
- PHP 性能分析第一篇: Xhprof & Xhgui 介绍
[前言]这是国外知名博主 Davey Shafik所撰写的 PHP 应用性能分析系列的第一篇,阅读第二篇可深入了解 xhgui,第三篇则关注于性能调优实践. 什么是性能分析? 性能分析是衡量应用程序在 ...
- Appium下Android keyevent整理
keycode 3:首页(Home key) keycode 4:返回键(Back key) keycode 5:电话键(Call key) keycode 6:结束通话键(End Call key) ...
- 常见的NoSql系统使用场景分析--转载
•Cassandra •特性:分布式与复制的权衡\根据列和键范围进行查询\BigTable类似的功能:列,列族\写比读快很多 •最佳适用:写操作较多,读比较少的时候.如果你的系统都是基于Java的时候 ...
- SQL技术内幕-8 使用WITH AS提高性能简化嵌套SQL
--本文来源:http://www.cnblogs.com/fygh/archive/2011/08/31/2160266.html 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(s ...
- CodeIgniter API
http://apigen.juzna.cz/doc/EllisLab/CodeIgniter/tree.html Classes CI_Benchmark CI_Calendar CI_Cart C ...
- SQL语句AND 和 OR执行的优先级
例句: ) FROM RT_CUSTALLOCRESULT WHERE REGDATE BETWEEN '2014-03-01' AND '2014-03-31' ) FROM RT_CUSTALLO ...
- Windows 回调监控 <一>
在x86的体系结构中,我们常用hook关键的系统调用来达到对系统的监控,但是对于x64的结构,因为有PatchGuard的存在,对于一些系统关键点进行hook是很不稳定的,在很大几率上会导致蓝屏的发生 ...