主线程
{  int i;
   LBtnDown()消息开一个辅线程
   {AfxBeginThread(thread,...);}
   thread()辅线程控制函数修改i
   {...};
   RBtnDown()消息显示修改后的i
}
这个结构是说明:
我开了一个主线程,开一个辅线程,主线程里的一个变量被辅线程修改了,但是我当时得不到结果,为什么?不是像函数调用那样么?
1.难道非得等主线程完事,辅线程才开始干活?
2.我如何用CEvent对象才能使辅线程改完,马上回到主线程,显示出来就是修改后的?
请大侠指点,尤其是怎么实现2.谢谢.

解决方案 »

  1.   

    在“LBtnDown()消息开一个辅线程”后面Sleep一下,可能会有意想不到的效果!
      

  2.   

    那你可以创建一个EVENT对象嘛。
    主线程中创建HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, "CheckChanged");
    当子线程开始后,在主线程调用
    WaitForSingleObject(hEvent, INFINITE);//等待hEvent变为信号态
    在子线程在执行
    HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, "CheckChanged");//获取和主线程相同的事件对象
    当i发生更改后,你就使用SetEvent(hEvent);
    此时主线程就开始执行了。不过这样会使主线程挂起直到i的值改变