MFC(VC6.0环境)中主线程等待子线程运行一段时间后再接着运行

听风看云 2013-05-21 09:13:52
如题,在主对话框中定义了一个结构体(结构体定义成一个CString和一个bool)数组arr,在某个按钮的响应代码中想达到如下目的:
1. 开一个子线程来遍历处理arr,处理每个结构体中的CString,并将理结果赋回,最后置bool为true,这个处理过程比较长(所以开个子线程出来);
2. 主线程也要遍历arr,但是在每次遍历时,先暂停一段时间(比如1k个毫秒),然后检测下当前数组元素的bool值是否为真,若为假,则再次暂停,否则就继续处理,比如弹出对话框以显示当前数组元素的CString值然后进行下一次遍历。

为了达到目的2,我进行如下编码
//初始化
for(int i = 0; i < 4; ++i)
{
m_struData[i].csRecgData = "Data#" + '0' + (i + 1);
m_struData[i].bFlag = false;
}

//创建一个后台线程对数组进行处理
HANDLE hThread = CreateThread(NULL, 0, ThreadProc, (LPVOID)this->m_hWnd, 0, NULL);
CloseHandle(hThread);

//每隔一段时间,就去取CClientDemo::m_struData数组中的一个值来显示
//之所以要隔一段时间是为了保证后台的识别线程已经至少处理了一个数组元素
for(i = 0; i < 4; ++i)
{
Sleep(1000);
while(!m_struData[i].bFlag)
{
Sleep(500);
}
AfxMessageBox(m_struGpRecgInfo.struData[i].csRecgData);
}

但是每次点击按钮后,程序先卡一会,然后直接崩溃……
求大神,如何破?
...全文
95 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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