BackGroundWorker用法

在编程中经常会遇到在一个按钮中执行复杂操作,并将复杂操作最后返回的值加入一个ListView或ComboBox中候选。这个时候程序会卡,当程序员将这些卡代码放进线程(Thread)中后发现当对控件操作时出现“线程间操作无效: 从不是创建控件的线程访问它”异常。          为什么.net不让我们跨线程操作控件,这是有好处的。因为如果你的线程多了,那么当两个线程同时尝试将一个控件变为自己需要的状态时,线程的死锁就会发生。但是难道就是因为这个原因,我们就只能让程序卡着么?当然不是,这里教大家一个解决方案:用BackGroundWorker          这里通过一个实例来告诉大家BackGroundWorker的用法。          首先我们先定义一个BackGroundWorker,大家可以去面板上拖一个,也可以自己手工定义一个。

 

this.backgroundWorker_Combo = new System.ComponentModel.BackgroundWorker();//定义一个backGroundWorker
this.backgroundWorker_Combo.WorkerSupportsCancellation = true;//设置能否取消任务this.backgroundWorker_Combo.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker_Combo_DoWork);//让backgroundWorker做的事
this.backgroundWorker_Combo.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker_Combo_RunWorkerCompleted);//当backgroundWorker做完后发生的事件

 

    如果是从面板上拖的,那么请在DoWork事件上双击,添加那些你想在背景线程中执行的代码,也就是那些可能会让你卡的代码。          然后再在RunWorkerCompleted事件上双击,添加那些你想往控件里操作的代码。          这里有一个开发实例,讲的是实现类似Google搜索中下拉列表的实现。其思路是在DoWork中搜索数据库,在Completed中将搜出来的东西放进去。          本文需要一个backgroundWorker,一个ComboBox控件

  static char x;/**//**//** <summary>/// 接受从DLL搜出来的项目/// </summary>private string[] global_ListItem;private void backgroundWorker_Combo_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e){//如果数组中有东西,那么加入ComboBoxif (global_ListItem.Length>0){this.comboBox_App.Items.Clear();this.comboBox_App.Items.AddRange(global_ListItem);}}private void backgroundWorker_Combo_DoWork(object sender, DoWorkEventArgs e){global_ListItem = Form_Setting.Global_DBC.SimilarFilter(x); //这是一个DLL中的方法,用于查找所有以X打头的项目,并放入一个数组中}private void comboBox_App_TextChanged(object sender, EventArgs e){//当用户键入一个字母时去数据库查ComboBox cb = sender as ComboBox;if (cb.Text.Length==1){x = cb.Text[0];this.backgroundWorker_Combo.RunWorkerAsync();}}

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

观易先生品三国

今天下了 易中天 易先生的品三国看了第一集 才知三国演义对三国历史曲解多深另外看到一副 剃头师傅的对联 颇有意思说是以关羽为祖师爷 颇有关羽的口气看天下头颅几许 看老夫手段如何转载于:https://www.cnblogs.com/slightboy/archive/2006/08/19/481439.html

TCP如何保证可靠性

TCP传输控制协议 TCP 协议是一种面向连接的&#xff0c;为不同主机进程间提供可靠数据传输的协议。TCP 协议假定其所使用的网络栈下层协议&#xff08;如IP 协议&#xff09;是非可靠的&#xff0c;其自身提供机制保证数据的可靠性传输。在目前的网络栈协议族中&#xff0c;在需…

c语言 数组循环移动,如何将一个数组的元素循环左移?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #define SIZE(a) (sizeof(a)/sizeof(a[0]))#define HBIT(a) ((a & 0x00000080) ! 0)#define LBIT(a) ((a & 0x00000001) ! 0)int TAB[] {0x10, 0x71, 0x12, 0x10, 0x10, 0x7C, 0x00, 0x00,0x00, 0x00, …

你们还在用8位单片机吗?

工作这些年&#xff0c;一种从事嵌入式相关的工作&#xff0c;大部分接触的是ARM芯片&#xff0c;不过也有接触到8位单片机的机会&#xff0c;在一些控制领域&#xff0c;8位单片机还是有自己的用武之地的&#xff0c;大家也来说一说&#xff0c;自己还有接触到8位单片机吗&…

生成 excel 直接用 httpServletResponse 输出

之前写过一篇文章 《超详细的java生成excel文件并下载》&#xff0c;该文章虽然够详细&#xff0c;也行得通&#xff0c;但还是有一定的缺陷&#xff0c;该文章可以拆分成两个部分&#xff0c;一是指定位置生成excel文件&#xff0c;二是根据地址下载文件。缺陷的部分是会产生中…

获取网站投资(融资成功)的20个自我检查

1、web2.0提了也白提web2.0这是一个概念&#xff0c;打着web2.0的概念&#xff0c;只是说技术如何如何2.0&#xff0c;战略如何2.0&#xff0c;其实意 义真的不大。投资人需要的是一个网民能够接受&#xff0c;并且很有特点的网站&#xff0c;能够满足网民的某个需求&#xff0…

MYSQL AB复制原理

Mysql复制&#xff08;replication&#xff09;是一个异步的复制&#xff0c;从一个Mysql instace&#xff08;称之为Master&#xff09;复制到另一个Mysql instance&#xff08;称之Slave&#xff09;。实现整个复制操作主要由三个进程完成的&#xff0c;其中两个进程在Slave&…

TCP拥塞控制详解

为了防止网络的拥塞现象 &#xff0c;TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成&#xff0c;后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”…

北航博士,研究所月入两万

大家好&#xff0c;看到张老师的一篇文章&#xff0c;说的一位研究生大哥的心路历程&#xff0c;分享给大家。作者&#xff1a;易贝贝https://www.zhihu.com/question/64371326/answer/2251105460文章转自&#xff1a;大鱼机器人北航博士&#xff0c;2019 年 7 月毕业&#xff…

分号是不是c语言的一部分,问什么C程序里总是提示缺少分号;,而明明有分号?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼if(lpNULL)printf("********还没存入图书********\n");else{for(s0;s<5;s){while(( szp->snumber[s]!lp->number )&&(lp->next!NULL))lplp->next;if( szp->snumber[s]lp->number){printf(&…

django使用用户名或手机号码登录

django有自己的认证系统&#xff0c;会自动根据用户名和密码进行验证。如果需要使用用户名或手机登录的话&#xff0c;需要重写django的认证后台&#xff0c;并且设置到配置文件中。 重写django的认证后台 class UsernameMobileAuthBackend(ModelBackend):"""用…

ArcUser 2006第2期拾零

前天收到了上半年的两期ArcUser&#xff0c;其中第二期的主题是Imagery In GIS。这一期的“聚焦”是“Using Imagery”&#xff0c;其中包含5篇文章&#xff1a;Leverage Imagery in ArcGISMobile GIS and Digital PhotomappingThe Key to the Present is the PastUnderstandin…

工作的习惯,看到好收藏下

转载的&#xff0c;读过了感觉有收获&#xff0c;分享下。1&#xff0c;当时公司招了大批应届本科和研究生毕业的新新人类。平均年龄25岁。那个新的助理&#xff0c;是经过多次面试后&#xff0c;我亲自招回来的一个女孩。名牌大学本科毕业&#xff0c;聪明&#xff0c;性格活泼…

TCP传输过程中丢包问题

TCP协议本身是保证传输的数据完整性不会丢数据的。如果通信中发现缺少数据或者丢包&#xff0c;那么&#xff0c;最大的可能在于程序发送的过程或者接收的过程出现问题。例如服务器给客户端发大量数据&#xff0c;Send的频率很高&#xff0c;那么就有可能在Send时发生错误&…

c语言随机迷宫生成器,作为新手该如何快速上手 C++

1.C 实现基数树使用 C 实现Radix树&#xff1a;一种基于二进制表示的键值的查找树&#xff0c;尤其适合处理非常长的、可变长度的键值&#xff0c;Patricia 的基本思想是构建一个二叉树。2.C 实现并行计算的K-Means聚类算法使用 C 实现一个完整的面向对象的可并行K-Means算法。…

薪资是跳出来的,不是涨出来的!

下面的内容是转自朱老师的公众号&#xff0c;他说的观点我是认同的&#xff0c;之前在一个国外的论坛&#xff0c;有个老外总结了程序员的涨薪情况&#xff0c;里面就有提到&#xff0c;如果想拿到比较好的薪水&#xff0c;靠的还是跳槽。当然&#xff0c;他还总结了很多其他方…

团队Alpha冲刺(三)

目录 组员情况组员1(组长)&#xff1a;胡绪佩组员2&#xff1a;胡青元组员3&#xff1a;庄卉组员4&#xff1a;家灿组员5&#xff1a;凯琳组员6&#xff1a;丹丹组员7&#xff1a;家伟组员8&#xff1a;政演组员9&#xff1a;鸿杰组员10&#xff1a;刘一好组员11&#xff1a;何…

收缩数据库

http://codehunter008.cnblogs.com/archive/2005/05/08/150998.aspxhttp://wuchang.cnblogs.com/archive/2004/10/13/51835.html 转载于:https://www.cnblogs.com/passrift/archive/2006/09/26/515292.html

我的助理辞职了!——给不听话的下属看看~

喜欢收藏下&#xff0c;以后给新人看。 是本人转载的&#xff0c;与诸位分享、交流。1&#xff0c;当时公司招了大批应届本科和研究生毕业的新新人类。平均年龄25岁。那个新的助理&#xff0c;是经过多次面试后&#xff0c;我亲自招回来的一个女孩。名牌大学本科毕业&#xf…

快速排序非递归算法c语言实现,数据结构与算法----3.5 非递归的快速排序方法

[c]代码库#include using namespace std;#include using namespace std;typedef int KeyType;struct LElemType{KeyType key;};struct SElemType{int a;int b;};struct SList{LElemType *r;int length;};const int StackInitSize10;const int StackInc15;struct SStack{SElemTy…