c#子线程执行完怎么通知主线程

程序了开了4个子线程.各自独立.子线程根据输入信号判断while循环,符合条件退出while循环,该子线程就算运行结束了,可是主线程怎么知道他执行完了呢?难道用一个时间触... 程序了开 了4个子线程.各自独立.子线程根据输入信号判断while循环,符合条件退出while循环,该子线程就算运行结束了,可是主线程怎么知道他执行完了呢?
难道用一个时间触发器,多少时间检测一下各个进程的运行情况?
难道用一个时间触发器,多少时间检测一下各个线程的运行情况?.打错字了!
展开
 我来答
石哥在拌饭
推荐于2017-11-25 · TA获得超过530个赞
知道小有建树答主
回答量:573
采纳率:100%
帮助的人:566万
展开全部
定义一个委托实现回调函数
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);
}
咖喱小西瓜
2012-03-08 · TA获得超过186个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:203万
展开全部
时间触发器其实是最好的..
不过你还可以通过新建一个进程来代替主进程循环检验,
然后代替主进程执行事件
其实原来一样,时间触发器其实也相当于一个进程

还提供一个想法,不过前提是WinForm程序,
拉一个label控件,隐藏,利用label的textchange事件触发,
每次线程跳出时改变label的text值,
然后在textchange事件判断是哪个进程完成,完成后做什么事情
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jarhf
2012-03-08 · TA获得超过1862个赞
知道小有建树答主
回答量:1736
采纳率:25%
帮助的人:1032万
展开全部
用回调函数就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式