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.處理大量數據,但對於后續的操作不相干的情況下可以將處理數據交給子線程來做,那么線程也可以解決界面卡死的情況,這里就不舉例子了,在線程里寫代碼的方法和主線程里寫法一樣,只是注意下同步就行了。