c#子线程执行完怎么通知主线程
程序了开了4个子线程.各自独立.子线程根据输入信号判断while循环,符合条件退出while循环,该子线程就算运行结束了,可是主线程怎么知道他执行完了呢?难道用一个时间触...
程序了开 了4个子线程.各自独立.子线程根据输入信号判断while循环,符合条件退出while循环,该子线程就算运行结束了,可是主线程怎么知道他执行完了呢?
难道用一个时间触发器,多少时间检测一下各个进程的运行情况?
难道用一个时间触发器,多少时间检测一下各个线程的运行情况?.打错字了! 展开
难道用一个时间触发器,多少时间检测一下各个进程的运行情况?
难道用一个时间触发器,多少时间检测一下各个线程的运行情况?.打错字了! 展开
3个回答
展开全部
定义一个委托实现回调函数
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);
}
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);
}
展开全部
时间触发器其实是最好的..
不过你还可以通过新建一个进程来代替主进程循环检验,
然后代替主进程执行事件
其实原来一样,时间触发器其实也相当于一个进程
还提供一个想法,不过前提是WinForm程序,
拉一个label控件,隐藏,利用label的textchange事件触发,
每次线程跳出时改变label的text值,
然后在textchange事件判断是哪个进程完成,完成后做什么事情
不过你还可以通过新建一个进程来代替主进程循环检验,
然后代替主进程执行事件
其实原来一样,时间触发器其实也相当于一个进程
还提供一个想法,不过前提是WinForm程序,
拉一个label控件,隐藏,利用label的textchange事件触发,
每次线程跳出时改变label的text值,
然后在textchange事件判断是哪个进程完成,完成后做什么事情
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用回调函数就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询