一个按钮启动线程,另一个按钮关闭线程//关闭线程错哪了

一个按钮启动线程,另一个按钮关闭线程//关闭线程哪里错了?

void CDThread_Feb26Dlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
m_threadcomm=AfxBeginThread(AFX_THREADPROC(ReadComm),(LPVOID)this,THREAD_PRIORITY_NORMAL,0,0,NULL);
m_threaddraw=AfxBeginThread(AFX_THREADPROC(display),(LPVOID)this,THREAD_PRIORITY_NORMAL,0,0,NULL);
}


void CDThread_Feb26Dlg::OnBnClickedButton2()
{
// TODO: Add your control notification handler code here
DWORD ExitCode=0;
GetExitCodeThread(m_threadcomm,&ExitCode);
//p为需要销毁的CWindThreadZ指针,其在创建线程时可以拿到.
if(ExitCode>0 )
AfxEndThread(ExitCode,true);
ExitCode=0;
GetExitCodeThread(m_threaddraw,&ExitCode);
//p为需要销毁的CWindThreadZ指针,其在创建线程时可以拿到.
if(ExitCode>0 )
AfxEndThread(ExitCode,true);
}

------解决方案--------------------
估计是线程里的资源没释放正确吧
------解决方案--------------------
MFC全局函数AfxBeginThread的返回值类型是CWinThread*

而API函数GetExitCodeThread第一个参数是 线程句柄
BOOL GetExitCodeThread(
  HANDLE hThread,      // handle to the thread
  LPDWORD lpExitCode   // termination status
);

CWinThread 类有个成员变量m_hThread 用来放当前线程的句柄

AfxEndThread函数用来退出线程 
void AfxEndThread( UINT nExitCode ); 只有一个参数
先退出线程,后用API函数GetExitCodeThread 得到线程的退出代码  你的顺序反了
AfxEndThread不能指定结束哪个线程 so 要到线程函数内调用,你这里这样写就成了结束主线程,

一般 线程内 有个循环给循环 设置个标志变量 在线程外 控制标志变量 来结束线程.....

线程外用 
BOOL TerminateThread(
  HANDLE hThread,    // handle to thread
  DWORD dwExitCode   // exit code
);
 
强行结束线程....