主线程与子线程间通信
做了个程序,单击按钮1打开一张图片并在窗口中显示,再单击按钮2后创建个子线程(子线程主要是执行一个算法处理图
片),最后把处理好的图片在窗口中重绘。但是并没有得到我要的结果,图片没有任何的改变,貌似是因为子线程还没有执行
完窗口就已经重绘了,现在的问题是我该怎么让主线程等待子线程(即算法)运行完后再重绘的问题???
在这先排除用sleep方法暂停主线程,因为这会影响代码的效率,还有就是图片的大小不一样的话子线程运行的时间也不确
定……
不知道有没有一种通信的手段,让按钮2创建子线程后去获取子线程运行完的消息然后接着运行下面的代码刷新窗口,如果有
的话,给个思路……在这先谢过了!或者利用线程同步的方法也可以,求个思路………
按钮2的代码:
m_pBuf = m_pdataContol->BitMap2Bits();
//创建线程
HANDLE hThread = CreateThread(NULL, 0, RunAlgorithm, NULL, 0, NULL);
//暂停运行
//Sleep(10);
CloseHandle(hThread);
m_pdataContol->UnLockBits();
EnterCriticalSection(&g_cs);
InvalidateRect(NULL); //这个刷新要怎样才能知道子线程已经处理完了,才执行