永发信息网

如何在子线程中访问父线程的空间

答案:2  悬赏:30  手机版
解决时间 2021-05-15 04:11

在窗体上创建的空间Label lab = new Label();(隶属于父线程),如何在子线程对这个控件进行操作,将这个空间加入这个窗体中。如果使用Control.CheckForIllegalCrossThreadCalls = false;忽略控件的线程交叉引用错误的方法试过,不可取。那么我需要使用委托,但是对于委托我也不太了解,请用这个题目为例来具体讲解下委托的定义,还有委托所适用的场合,委托的优点。

最佳答案
首先要指出这里的父线程不是主线程 这的确是个问题,也就是说怎么才能保证父线程结束后其子线程也都退出.有人说在父线程结束前结束掉子线程不就行了吗?但事实是,如何父线程被暴力时,根本无法正确处理子线程.个人认为有两种方法.

一是在父线程中得到句柄,创建子线程时作为参数传给子线程,这样子线程通过这个句柄可以知道父线程是否仍存活,如何已结束,则结束自身.


父线程中:


HANDLE hParent=INVALID_HANDLE_VALUE;
if (!DuplicateHandle (GetCurrentProcess (),GetCurrentThread (),GetCurrentProcess (),&hParent,NULL,TRUE,DUPLICATE_SAME_ACCESS))
printf ("get parent handle failed!\n");

CreateThread (&sa,0,thread_fun2,(LPVOID)hParent,NULL,NULL);


子线程中:


HANDLE hParent=(HANDLE)lpParam;
DWORD nCode;
do
{
if (!GetExitCodeThread (hParent,&nCode))
{
printf ("get exit code failed!\n");
printf ("error:%d\n",GetLastError ());
}
if (nCode!=STILL_ACTIVE)//父线程结束
return 1;
....
}while (....);


注意DuplicateHandle的参数,开始我图省事将最后一个参数也设为NULL,结果在子线程中调用GetExitCodeThread时会出错,通过错误代码知道是"拒绝访问",也即没有足够权限,因此在得到父线程实句柄时一定要指定访问权限.


第一种其实有点应付的味道,性能不好,而且并不能算是完成了要求,当然以实时性要求不高时也可以.另一种方法是通过一个全局数组,或者一个创建父线程时作为参数传入的数组存储所有建立的子线程句柄.这样当要结束父线程时,就可以根据这个数组将所有记录的子线程结束.有点浪费空间,不过性能肯定比第一种好,而且实时性也要好得多.

全部回答
CreateThread (&sa,0,thread_fun2,(LPVOID)hParent,NULL,NULL);

子线程中:

HANDLE hParent=(HANDLE)lpParam; DWORD nCode; do { if (!GetExitCodeThread (hParent,&nCode)) { printf ("get exit code failed!\n"); printf ("error:%d\n",GetLastError ()); } if (nCode!=STILL_ACTIVE)//父线程结束

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
攸县优品烘焙坊地址在什么地方,想今天过去办
一般婚庆公司用的摄像后期制作软件有哪些
拆线后多久可以注射疤痕针
海子写的关于白桦林的诗歌
LED显示屏哪个工厂做的比较好一点?
为什么说父母是祸害啊
怎么删除掉这个病毒
冬季脚冷无法入睡
宣府大街/义圣宫路(路口)在什么地方啊,我要
我家电脑上存的歌曲全成了文件?
怎样使用更换QQ2010皮肤的文件?
洛龙区菜鸟驿站(洛阳建业高尔夫北门四家店)这
现在做啥比较挣钱?
高内夫经常说的口头禅是什么
英语翻译25.伯牙绝弦伯牙善鼓琴,钟子期善听.
推荐资讯
你们觉得快乐男生武艺会成为冠军吗
索爱怎么调多个闹钟
向阳区金顺风味香包这个地址在什么地方,我要
CF和CS哪个好玩,哪个地图多?
怎么样制作QQ闪字?(要宋体的那种)
夏天出游的句子,夏天的古诗句
几天前溜了次鼻血,后几天痰里经常带血.鼻子里
哪里能买到这种防水布
秭归县新天地量贩式KTV(平湖四路)这个地址怎
除了百度,还有哪些网站可以上传空间音乐的
什么牌子的化妆品补水效果好?
记忆大师经典语录,Angel Beats的经典语录
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?