首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

线程的挂起与唤醒解决办法

2012-03-31 
线程的挂起与唤醒m_hThread CreateThread(NULL,0,ThreadProcess,this,CREATE_SUSPENDED,NULL)中间有定

线程的挂起与唤醒

m_hThread = CreateThread(NULL,0,ThreadProcess,this,CREATE_SUSPENDED,NULL);

中间有定时器timeSetEvent(),间隔一个毫秒,调用一次回调函数,在回调函数中执行一次线程的唤醒动作
void CMainFrm::TimeCallBack()
{
................代码处理段
ResumeThread(m_hThread);

}

DWORD _stdcall ThreadProcess()
{
..............代码处理段
AfxMessageBox("线程被唤醒");
//处理完成后
SuspendThread(m_hThread);
return 0;
}

我的问题是:程序进来后,线程被唤醒了一次,再往后执行,就没有被唤醒了!我感觉是挂起时没有被挂起,所以后面的唤醒就无效了!求各路高手指点!

[解决办法]
线程中没有while或for循环,执行完一次线程不就退出了?
[解决办法]
‘ResumeThread(m_hThread);’
‘SuspendThread(m_hThread);’
为什么都不检查返回值?
[解决办法]

探讨

引用:
线程中没有while或for循环,执行完一次线程不就退出了?

我的循环是外部的定时保证的啊,用timeSetEvent(),每隔一个毫秒调用一次回调函数,然后在回调里面对线程再次唤醒!这样反复不行?

[解决办法]
呵呵,楼主仔细想想吧,你这个流程是不是有点问题。。。画个流程图啥的你就明白啦
你创建了个线程,然后挂起,通过定时器去唤醒,然后呢?然后线程执行完功能之后再挂起,
再然后呢?再然后线程就执行完啦!!!问题就在这,所以楼上有人说while循环什么的去执行

热点排行