C#多线程应用:子线程更新主窗体控件的值(一)
2024-10-18 17:17:03
我记得以前写过一次关于多线程的调用及更新的文章,由于时间比较久了,现在一时没找到。在做项目的时候,用到了多线程,还是有很多的同事在问多线程更新主窗体的事情,现在就这个事情做个记录。
说起多线程之间的更新或调用,无非都是代理之类的,可能很多人有不同的看法。
今天也不想和大家讨论底层的实现,就目前的问题而说,告诉大家两个常用的方式进行线程间的调用:
1)定义一个委托代理实现回调函数;
2)在子线程中使用Invoke返回主线程;
刚刚我已经说了,今天主要说代理的使用,如果你对这方面的知识点相对薄弱的话,最好先查查代理的使用。
对于上面的这两种方式的不同一个是主线程实现,另一个在子线程中实现,详细的不同的使用你可以去百度看看;
今天主要告诉大家第一种方式,在主线程中实现具体功能,由于此类代码网上到处都是,所以我也直接从网上copy一份,以下是代码的实现:
程序了开 了4个子线程.各自独立.子线程根据输入信号判断while循环,符合条件退出while循环,该子线程就算运行结束了,可是主线程怎么知道他执行完了呢?
难道用一个时间触发器,多少时间检测一下各个进程的运行情况?
问题补充:
难道用一个时间触发器,多少时间检测一下各个线程的运行情况?
满意回答
定义一个委托实现回调函数
public delegate void CallBackDelegate(string message); 程序开始的时候
//把回调的方法给委托变量
CallBackDelegate cbd = CallBack;
//启动线程
Thread th = new Thread(Fun);
th.Start(cbd);//开始线程,代入参数 //线程执行的方法 参数是个委托, 线程中参数需要用object类型.
public void Fun(object o)
{
//这里是你的操作代码,循环,根据条件退出while
while(true)
{
}
//把传来的参数转换为委托
CallBackDelegate cbd = o as CallBackDelegate;
//执行回调.
cbd("这个线程传回的信息");
} //回调方法
private void CallBack(string message)
{
//主线程报告信息,可以根据这个信息做判断操作,执行不同逻辑.
MessageBox.Show(message);
}
出处:http://blog.csdn.net/suncherrydream/article/details/8571890
最新文章
- 简单例子了解View的事件分发
- python 学习
- 【数据结构】红黑树 C语言代码
- jQuery.fn.extend与jQuery.extend到底区别在哪?
- 欧洲用户放弃Android转投iOS原因大起底
- 给虚拟机中的CentOS7配置固定ip
- com.ulitis.www
- [android开发之内容更新类APP]二、这几日的结果
- C# 常用参数
- poi 合并单元格、设置边框
- 第3天:CSS浮动、定位、表格、表单总结
- python3 Flask -day1
- 【学习笔记】【Design idea】二、产品内测、公测、候选版本的概念及版本代码的书写
- NTP服务和DNS服务(week3_day3)--技术流ken
- [离散时间信号处理学习笔记] 3. 一些基本的LTI系统
- JavaScript基础笔记(十一)JSON
- APDL link180单元
- iOS视频开发经验
- 微信支付-微信公众号支付,微信H5支付,微信APP支付,微信扫码支付
- awk 改名
热门文章
- java fastjson 设置全局输出name最小化
- Python笔记 #13# Pandas: Viewing Data
- Python3.x:自动生成IP写入文本
- RocEDU.阅读.写作《苏菲的世界》书摘(七)
- Java Mail 邮件发送简单封装
- Python3基础 print \"; 输出单引号与双引号
- class文件的结构
- 2016湘潭邀请赛—Gambling
- Android-----购物车(包含侧滑删除,商品筛选,商品增加和减少,价格计算,店铺分类等)
- linux利用软件raid搭建iscsi存储