Application.ProcessMessages问题
procedure TForm1.ContClick(Sender: TObject);
//continuouscapture =0 表示停止连续采集
//continuouscapture =1 表示开始连续采集
begin
continuouscapture := 1 -continuouscapture;
while(continuouscapture=1) do
begin
acquaireimg.OnClick(sender); // 采集数据的操作
Application.ProcessMessages;
end;
end;
我希望可以在ContClick事件发生后,转换接收的状态。程序是上面的,可以实现转换,但是问题是偶尔(比如经过2~3次转换)程序就会跑死,不知道是什么原因,请大家帮忙!
[解决办法]
是不是acquaireimg.OnClick中死循环了
[解决办法]
acquaireimg.OnClick(sender); // 采集数据的操作
这个或许应该放在里面吧Application.ProcessMessages;
[解决办法]
continuouscapture 这个值你在哪儿改变的?
如果只是0,1,为什么不用 Boolean变量?
实在看不懂你这个编程出发点。如果要定时触发,有TTimer()可用。不论是自动或是手动,Timer都能实现你要的效果。
不知道你的数据采集操作是不是有应答等待,这样的处理一定要有超时处理。
如果你是操作串口,多次重复操作如果没有超时处理,肯定会死锁的
[解决办法]
acquaireimg.OnClick(sender);
这里头的代码可以加上
sleep(10);
Application.ProcessMessage;
放在外头,相当于要等待 OnClick 之后,才会释放一次控制权。不过比较好的解决方案还是用多线程。