首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Application.ProcessMessages有关问题

2012-08-17 
Application.ProcessMessages问题procedure TForm1.ContClick(Sender: TObject)//continuouscapture 0

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 之后,才会释放一次控制权。不过比较好的解决方案还是用多线程。

热点排行