请教,C++ Builder 提示“system error,code:1400,无效的窗口句柄”如何解决??
各位高手,请教一下,现在程序中添加一个线程,用来采集数据和更新数据库,更新Image,线程结束后,点击Button3执行Form3->Show();就会弹出“system error,code:1400,无效的窗口句柄”,但如果在执行结束前,点击过Button3执行Form3->Show();就不会出错,请问各位是什么问题呀?谢谢!
代码如下:
void __fastcall TForm_Main::Button3(TObject *Sender)
{
Form3->Show();
}
__fastcall TRecordThread::TRecordThread(bool CreateSuspended)
: TThread(CreateSuspended)
{
//定义线程优先级
Priority=tpHigher;
FreeOnTerminate=false;
}
//自定义线程函数——TRecordThread
void __fastcall TRecordThread::Execute()
{
cs->Acquire();
while(Terminated==false)
{
//采集数据
……
//更新数据库
this->Synchronize(Record_Update);
//更新显示Image
this->Synchronize(Image_Update);
if(finished)
break;
}//while(Terminated==false)
cs->Release();
}
//自定义线程函数——TRecordThread
void __fastcall TRecordThread::Image_Update()
{
//更新Image
……
}
//自定义线程函数——TRecordThread
void __fastcall TRecordThread::Record_Update()
{
//用AdoQuery Insert into更新Record
……
}
[解决办法]
线程结束后,可能释放了某些资源。造成问题
[解决办法]
该线程结束的时候,内核对象计数减为零所以句柄指向的内核对象不存在,句柄就无效了。