开始执行CWinThread对象之前要设置CWinThread对象的m_bAutoDelete属性为FALSE, 线程结束时才能调用delete pThread, 否则AfxBeginThread(...)创建的CWinThread对象在线程结束时候被框架删除了, 所以delete pThread会释放一个无效的指针.
修改代码如下可以保证delete pThread不出错, 实际上没有必要delete pThread, 框架已经跟你做了这件事:
CWinThread *pThread;
pThread = AfxBeginThread(MyControllingFunction,NULL, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); // 注意设置线程挂起标志
pThread->m_bAutoDelete = FALSE;
VERIFY(pThread->ResumeThread() != (DWORD)-1);
WaitForSingleObject(pThread->m_hThread, INFINITE);
delete pThread;
看了上面的代码,还是没成功,也不是很会使用线程,项目里用到了线程,我的使用方法很简单,我的使用方法如下:
CWinThread *pThread;
pThread = AfxBeginThread(MyControllingFunction,this, THREAD_PRIORITY_NORMAL)
好了,就这些,其它的都没写什么,程序也能运行,线程也执行了,可是发现,线程结束不稳定,经常在关闭程序后,还占着CPU,我试用了一些方法,也没办法在线程执行完后成功关闭线程,不知道在看的各位有没有什么办法,如果你有什么办法的话,希望能告诉我,谢谢啦
Tags: VC
原创文章如转载,请注明:转载自:飞扬部落编程仓库 : http://www.busfly.net/csdn/
本文链接地址:http://www.busfly.net/csdn/post/26.html
如果你喜欢本文,请顶一下,支持我,你的支持是我继续发好文章的最大动力。谢谢。
好东西需要分享,快把本文发给你的朋友吧~!~