工作线程:
DWORD WINAPI CDecoder::DecodeThread(LPVOID pParam)
{
while (ReadCouter<FileLen)
{
//判断标志,停止解码
if (pDecoder->m_bDecodeExit)
{
File.Close();
return 0;
}
do something
//此处导致死锁
//pDecoder->m_MsgWnd为静态文本框
pDecoder->m_MsgWnd.SetWindowText(strTemp);
}
主线程:
开始线程:
m_bDecodeExit=FALSE;
m_pDecodeThread=::AfxBeginThread(
(AFX_THREADPROC)DecodeThread,
(LPVOID) this,
THREAD_PRIORITY_NORMAL,
CREATE_SUSPENDED,
NULL
);
ASSERT_VALID(m_pDecodeThread);
m_pDecodeThread-> ResumeThread();
结束线程:
m_bDecodeExit=TRUE;
if(WaitForSingleObject(m_pDecodeThread-> m_hThread,INFINITE)==WAIT_OBJECT_0)
{
m_pDecodeThread=NULL;
}