C#多线程应用:子线程更新主窗体控件的值(一)

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

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

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

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值