主线程如何等待子线程的结束?(非阻塞等待)

banmiton 2009-08-20 08:43:02
请问在主线程里如何等待子线程的结束?
例如我在button的单击事件中,创建一线程执行某函数,
thread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)addFun,(void*)1,0,NULL);
那么我在窗口中如何等待该线程结束?
...全文
829 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chendslove 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 feilinhe 的回复:]

要么是主线程WaitForSingleObject()子线程
要么子线程退出给主线程发送PostThreadMessage消息
[/Quote]
支持
visualthinking 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 banmiton 的回复:]
请问在主线程里如何等待子线程的结束?
例如我在button的单击事件中,创建一线程执行某函数,
thread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)addFun,(void*)1,0,NULL);
那么我在窗口中如何等待该线程结束?
[/Quote]
在主线程等待的话就用MsgWaitForMultipleObjects,将线程对象加入到等待的对象数组中,同时还不影响接收消息
fantiyu 2009-08-21
  • 打赏
  • 举报
回复
主线程创建线程同时创建一个结构体, 将指针作为参数传入线程
线程中修改这个结构体向主线程汇报自己的状态

比如结构体为
{
BOOL bRunning; //线程是否结束
int nIoBytes; //已操作的IO字节数
}

线程中修改, 主线程对数据进行获取和判断
chinezwq 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 feilinhe 的回复:]
要么是主线程WaitForSingleObject()子线程
要么子线程退出给主线程发送PostThreadMessage消息
[/Quote]支持
MoXiaoRab 2009-08-20
  • 打赏
  • 举报
回复
WaitForSingleObject 还可以设置超时等待时间
feilinhe 2009-08-20
  • 打赏
  • 举报
回复
要么是主线程WaitForSingleObject()子线程
要么子线程退出给主线程发送PostThreadMessage消息
jtzhang_2000 2009-08-20
  • 打赏
  • 举报
回复
在线程退出时发送线程消息到主线程通知窗口
zyq5945 2009-08-20
  • 打赏
  • 举报
回复
非阻塞==那么我在窗口中如何等待该线程结束????
在线程返回的时候给窗口发个消息,不阻塞占用窗口线程的时间。
shenyi0106 2009-08-20
  • 打赏
  • 举报
回复
等待线程句柄即可,退出后即返回
WooSir 2009-08-20
  • 打赏
  • 举报
回复
用 WaitForSingleObject()

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧