关于主线程结束子线程的问题??
好久没写多线程了,今天写了下,遇到一个郁闷的问题:
BOOL bClose = FALSE;//全局
MFC的程序中OnClose函数(关闭程序)
void CTestDlg::OnClose()
{
bClose = TRUE;
WaitForSingleObject(hMutex, INFINITE);//线程函数未结束时,结束程序会卡在这边
AfxMessageBox(L"Close thread");
ReleaseMutex(hMutex);
CloseHandle(hMutex);
hMutex = NULL;
CDialog::OnClose();
}
线程函数基本如下:
VOID ThreadMove(LPVOID param)
{
WaitForSingleObject(hMutex, INFINITE);
while(pRecordset->EndOfFile == VARIANT_FALSE)
{
if (bClose)
{
//pDlg->m_Info.SetWindowText(L"线程退出");
break;//
}
pRecordset->MoveNext();
}
pRecordset->Close();
pMyConnect->Close();
ReleaseMutex(hMutex);
return;
}
问题描述:
首先启动线程函数,线程函数未结束,此时关闭程序,调用了OnClose函数,但是会卡在WaitForSingleObject
函数这,不明白为什么?