我记得以前写过一次关于多线程的调用及更新的文章,由于时间比较久了,现在一时没找到。在做项目的时候,用到了多线程,还是有很多的同事在问多线程更新主窗体的事情,现在就这个事情做个记录。

说起多线程之间的更新或调用,无非都是代理之类的,可能很多人有不同的看法。

今天也不想和大家讨论底层的实现,就目前的问题而说,告诉大家两个常用的方式进行线程间的调用:

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

最新文章

  1. 简单例子了解View的事件分发
  2. python 学习
  3. 【数据结构】红黑树 C语言代码
  4. jQuery.fn.extend与jQuery.extend到底区别在哪?
  5. 欧洲用户放弃Android转投iOS原因大起底
  6. 给虚拟机中的CentOS7配置固定ip
  7. com.ulitis.www
  8. [android开发之内容更新类APP]二、这几日的结果
  9. C# 常用参数
  10. poi 合并单元格、设置边框
  11. 第3天:CSS浮动、定位、表格、表单总结
  12. python3 Flask -day1
  13. 【学习笔记】【Design idea】二、产品内测、公测、候选版本的概念及版本代码的书写
  14. NTP服务和DNS服务(week3_day3)--技术流ken
  15. [离散时间信号处理学习笔记] 3. 一些基本的LTI系统
  16. JavaScript基础笔记(十一)JSON
  17. APDL link180单元
  18. iOS视频开发经验
  19. 微信支付-微信公众号支付,微信H5支付,微信APP支付,微信扫码支付
  20. awk 改名

热门文章

  1. java fastjson 设置全局输出name最小化
  2. Python笔记 #13# Pandas: Viewing Data
  3. Python3.x:自动生成IP写入文本
  4. RocEDU.阅读.写作《苏菲的世界》书摘(七)
  5. Java Mail 邮件发送简单封装
  6. Python3基础 print \" 输出单引号与双引号
  7. class文件的结构
  8. 2016湘潭邀请赛—Gambling
  9. Android-----购物车(包含侧滑删除,商品筛选,商品增加和减少,价格计算,店铺分类等)
  10. linux利用软件raid搭建iscsi存储