Delphi编程防止界面卡死的方法

1.循环里面防止界面卡死的方法可以使用Application.ProcessMessages;

  例如下列方法:

    var
      n: Integer;
    begin
      for n := 0 to 10000 do
      begin
        Edit1.Text := IntToStr(n);
      end;
    end;

  在程序里执行的时候,界面肯定会卡死的,但如何防止界面出现卡的情况呢,加入Application.ProcessMessages即可,修改后的代码为:

    var
      n: Integer;
    begin
      for n := 0 to 10000 do
      begin
        Application.ProcessMessages;
        Edit1.Text := IntToStr(n);
      end;
    end;

  这样运行的时候界面就不卡了!Application.ProcessMessages会转移程序控制权,使用的时候根据情况来选择!

2.网络程序在连接通信的时候出现界面卡死 

此时可以使用indy自带的一个控件来解决问题TIdAntiFreeze,在连接或者通信之前按照下列方法加入代码;

    procedure TForm38.Button1Click(Sender: TObject);
    begin
      IdAntiFreeze1.OnlyWhenIdle:=False;
      IdTCPClient1.Host:='192.168.13.89';
      IdTCPClient1.Port:=3456;
      IdTCPClient1.Connect;
    end;

 

3.处理大量数据,但对于后续的操作不相干的情况下可以将处理数据交给子线程来做,那么线程也可以解决界面卡死的情况

posted @ 2020-11-05 13:22  dqi1999  阅读(816)  评论(0)    收藏  举报