TEvent的问题,100分求教
psh 2002-04-25 11:33:39 下面程序是要主线程根据后台线程对TEvent事件置为有信号后进行循环体中的操作,由于主线程先执行到while(AEvt->WaitFor(10000)==wrSignaled)语句后,后台线程才执行AEvt->SetEvent()故未进入循环体中。若在其前加ShowMessage(),则能。为什么?
急!!!请高人指点迷津,谢谢!
void __fastcall TMainForm::bbnTestClick(TObject *Sender)
{
//...
BgThread->WriteBuffer(mCmd,mCmdLen); //BgThread为TBackgroundThread的对象
//ShowMessage("Wait for Signaled"); //若有该句,则能进行循环体执行
while(AEvt->WaitFor(10000)==wrSignaled)
{
Sample();
break;
}
//...
}
void __fastcall TBackgroundThread::Execute()
{
while (!Terminated)
{
//...
if(BytesRead)
{
MainForm->AEvt->SetEvent(); //AEvt为全局TEvent变量
}
//...
}
}