主线程
{ int i;
LBtnDown()消息开一个辅线程
{AfxBeginThread(thread,...);}
thread()辅线程控制函数修改i
{...};
RBtnDown()消息显示修改后的i
}
这个结构是说明:
我开了一个主线程,开一个辅线程,主线程里的一个变量被辅线程修改了,但是我当时得不到结果,为什么?不是像函数调用那样么?
1.难道非得等主线程完事,辅线程才开始干活?
2.我如何用CEvent对象才能使辅线程改完,马上回到主线程,显示出来就是修改后的?
请大侠指点,尤其是怎么实现2.谢谢.
{ int i;
LBtnDown()消息开一个辅线程
{AfxBeginThread(thread,...);}
thread()辅线程控制函数修改i
{...};
RBtnDown()消息显示修改后的i
}
这个结构是说明:
我开了一个主线程,开一个辅线程,主线程里的一个变量被辅线程修改了,但是我当时得不到结果,为什么?不是像函数调用那样么?
1.难道非得等主线程完事,辅线程才开始干活?
2.我如何用CEvent对象才能使辅线程改完,马上回到主线程,显示出来就是修改后的?
请大侠指点,尤其是怎么实现2.谢谢.
主线程中创建HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, "CheckChanged");
当子线程开始后,在主线程调用
WaitForSingleObject(hEvent, INFINITE);//等待hEvent变为信号态
在子线程在执行
HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, "CheckChanged");//获取和主线程相同的事件对象
当i发生更改后,你就使用SetEvent(hEvent);
此时主线程就开始执行了。不过这样会使主线程挂起直到i的值改变