子线程的代码如下: 
while( done<= end3) 

len = fread(buf, sizeof(char), 10000, pFileRead); 
if(len <= 0) 
break; ret = decodeMP3(&mp,buf,len,out,8192,&size); 
if(firstbuf) 

aufile->samplerate = freqs[mp.fr.sampling_frequency]; 
firstbuf = FALSE; 

while(ret == MP3_OK) 

samplesperframe = size/bytespersample; 
write_audio_file(aufile, out, samplesperframe, 0); ret = decodeMP3(&mp,NULL,0,out,8192,&size); 

done+=len; 
int t=100 * done/(end3); 
::SendMessage(m_hwnde,WM_EB200WAVE,KaProOK,(long)t); 
::EnterCriticalSection(&m_css); 
m_lbreak=m_break; 
::LeaveCriticalSection(&m_css); 
if(m_lbreak) 
break; 
} 主线程的代码如下: 
BOOL CPipe::StopThread() 

if (tran) 

::EnterCriticalSection(&m_css); 
m_break=TRUE; 
::LeaveCriticalSection(&m_css); 
if (tran) 

WaitForSingleObject(tran,INFINITE); 

CloseHandle(tran); 
tran=0; 
return TRUE; 

DeleteCriticalSection(&m_css); 
return FALSE; 
} 主线程通过改变变量m_break的值,通知子线程退出循环,并且WaitForSingleObject(tran,INFINITE)等待循环退出! 
此时出现的问题是,为什么这个,变量值改变了,然而子线程的这个变量值没有改变,依然没有退出循环,因此主线程一直WaitForSingleObject(tran,INFINITE)等待,得不到通知?请高手帮忙!