线程挂起,跟恢复都不能起到作用,为什么
线程挂起,和恢复都不能起到作用,为什么?
OnInitDialog函数下添加
HThread=AfxBeginThread(ThreadFun,NULL,0,0,CREATE_SUSPENDED,NULL);
两个按钮
Hthread的值不为0,是正确的。但是使用挂起线程,也不能挂起。恢复也不能恢复线程(一开始我使用的不是CREATE_SUSPENDED是0,也挂不起)
------解决方案--------------------
你不妨查看一下AfxBeginThread的声明,它的返回值不是HANDLE
用CreateThread吧
------解决方案--------------------
AfxBeginThread返回的是CWinThread*
CWinThread* TS;
TS->m_hThread;
m_hThread才是句柄
OnInitDialog函数下添加
HThread=AfxBeginThread(ThreadFun,NULL,0,0,CREATE_SUSPENDED,NULL);
- C/C++ code
UINT ThreadFun(LPVOID LPARAM) { int Count=0; char Temp[100]; while(1) { if(flag) { Count++; sprintf(Temp,"%d",Count); SetDlgItemText(AfxGetApp()->m_pMainWnd->m_hWnd,IDC_EDIT1,Temp); } } return 0; }
两个按钮
- C/C++ code
void CThreadTestDlg::OnBegin() { flag=TRUE; TRACE("Resumethread"); ResumeThread(HThread); }
- C/C++ code
void CThreadTestDlg::OnStop() { flag=FALSE; SuspendThread(HThread); }
Hthread的值不为0,是正确的。但是使用挂起线程,也不能挂起。恢复也不能恢复线程(一开始我使用的不是CREATE_SUSPENDED是0,也挂不起)
------解决方案--------------------
你不妨查看一下AfxBeginThread的声明,它的返回值不是HANDLE
用CreateThread吧
------解决方案--------------------
AfxBeginThread返回的是CWinThread*
CWinThread* TS;
TS->m_hThread;
m_hThread才是句柄