MFC下线程唤醒问题

net_worm 2000-07-27 10:23:00
hThread = AfxBeginThread( CMyApp::MyThread,
(LPVOID *)¶m, THREAD_PRIORITY_ABOVE_NORMAL, NULL,
CREATE_SUSPENDED,
NULL);

其中CMyApp为从CWinApp继承来的,那么我该怎么唤醒这个已经产生的线程呢?而我用
CWinThread::ResumeThread();

切没有办法唤醒。求高手指点一二。
...全文
128 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
scorpion 2000-07-28
  • 打赏
  • 举报
回复
在CMyWinApp::InitInstance()中的CWinThread::ResumeThread()改为hThread->ResumeThread();
net_worm 2000-07-27
  • 打赏
  • 举报
回复
抱歉,我没有写的很详细。现将比较详细的程序附上:
在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!
dawnsun 2000-07-27
  • 打赏
  • 举报
回复
从你的程序看,你创建的是一个worker thread,但若是worker thread则与CMyApp是从
何继承而来的没有关系,若创建的是一个UI thread的话,则与CMyApp有关,但创建方法
对不上;另外,hThread看上去像个句柄,其实它应该是CWinThread*. 所以你的代码看上
去有些费解,你在检查一下代码,看看是否有使用不当之处.

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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