主程序和扫描程序要同时运行,该怎么实现呢?高手帮帮忙,倾家荡产献上所有分
在主程序运行时,扫描程序也要同时运行检查外部急停按钮是否被按下,如果按下了,则立即结束主程序,该怎么实现呢?
是不是只要另外建一个线程执行扫描程序,但是这样的话,好象就不能同时执行了:要等主程序执行完才会执行扫描程序!
还是建两个线程,一个执行主程序,另一个执行扫描程序呢,这样是可以,但因为主程序要改变许多VCL控件属性,所以就把主程序放到Synchronize()中,这样的话又不能同步了,不知道为什么?
请高手帮帮忙,应该怎么弄才好!
[解决办法]
这种情况可以不用线程,只需在急停按钮里写好事件,然后在程序里可能引起阻塞的地方如while循环里加入 Application-> ProcessMessages();这一句就可以让程序不被阻塞处理消息。
[解决办法]
private:void __fastcall IdleEventResponse(TObject *Sender, bool &Done);
//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner)
{
Application-> OnIdle=IdleEventResponse;
}
//---------------------------------------
void __fastcall TForm1::IdleEventResponse(TObject *Sender, bool &Done)
{
ShowMessage( "现在有空,我去查看【急停】被按没有,就一下下,这一下下,哈哈 ");
}