MFC下线程唤醒问题
hThread = AfxBeginThread( CMyApp::MyThread,
(LPVOID *)¶m, THREAD_PRIORITY_ABOVE_NORMAL, NULL,
CREATE_SUSPENDED,
NULL);
其中CMyApp为从CWinApp继承来的,那么我该怎么唤醒这个已经产生的线程呢?而我用
CWinThread::ResumeThread();
切没有办法唤醒。求高手指点一二。
问题点数:20、回复次数:3Top
1 楼dawnsun(知之不多)回复于 2000-07-27 22:53:00 得分 10
从你的程序看,你创建的是一个worker thread,但若是worker thread则与CMyApp是从
何继承而来的没有关系,若创建的是一个UI thread的话,则与CMyApp有关,但创建方法
对不上;另外,hThread看上去像个句柄,其实它应该是CWinThread*. 所以你的代码看上
去有些费解,你在检查一下代码,看看是否有使用不当之处.Top
2 楼net_worm(三流)回复于 2000-07-27 23:29:00 得分 0
抱歉,我没有写的很详细。现将比较详细的程序附上:
在MyWin.h中:
class CMyWinApp : public CWinApp
{
DECLARE_DYNCREATE(CMyWinApp)
private:
CWinThread * hThread;
public:
virtual BOOL InitInstance();
static UINT MyThread(LPVOID);
……
}
在MyWin.cpp中:
IMPLEMENT_DYNCREATE(CMyWinApp, CWinApp)
BOOL CMyWinApp::InitInstance()
{
……
hThread = AfxBeginThread(CMyWinApp::MyThread, (LPVOID *)¶m, READ_PRIORITY_ABOVE_NORMAL,NULL, CREATE_SUSPENDED, NULL);
CWinThread::ResumeThread();
……
}
UINT CMyWinApp::MyThread(LPVOID param)
{
while(1)
{
AfxGetMainWnd()->MessageBox("Hello -- MyThread.", "Hello Box");
Sleep(50000);
}
}
谢谢dawnsun!
Top
3 楼scorpion()回复于 2000-07-28 08:34:00 得分 10
在CMyWinApp::InitInstance()中的CWinThread::ResumeThread()改为hThread->ResumeThread();Top




