WaitForSingleObject 无限等待,阻塞主线程
我在主界面点击按钮时弹出一个子界面,并开启一个线程,当我关闭子界面时,判断线程是否退出,如果没有退出,就用WaitForSingleObject(hThread_QAM,INFINITE); 进行等待,等到线程自己做完然后return.但是现在在这里wait变成无限等待了,主界面也一直阻塞住了...
CWinThread* wThread;
HANDLE hThread_QAM;
wThread = AfxBeginThread(theProc_QAM,NULL);
if( NULL != wThread)
{
hThread_QAM = wThread-> m_hThread;
}
UINT CQAMDlg::theProc_QAM(LPVOID p)
{
return m_pThis->QAM();
}
DWORD CQAMDlg::QAM()
{
if (INVALID_HANDLE_VALUE != hComm)
{
BOOL fWriteStat;
OVERLAPPED WRITE_OS;
CString m_addr;
int ItemCount = m_list.GetItemCount();
CriticalSection.Lock();
for (int Count = 0;Count < ItemCount;Count++)
{
//do sth;
}
CriticalSection.Unlock();
}
return 0;
}
void CQAMDlg::OnClose()
{
if(hThread_QAM)
{
DWORD exitcode1;
GetExitCodeThread(hThread_QAM,&exitcode1);
if(0 != exitcode1)
{
WaitForSingleObject(hThread_QAM,INFINITE); //现在也是无限等待了,不明白为什么啊...按理说它只会阻塞到我那边线程退出.
CloseHandle(hThread_QAM);
}
}
g_tip = "";
CDialog::OnClose();
}