我用了一下方法延時10秒
procedure TForm1.Delay(); var
NumSec:SmallInt;
StartTime:LongInt;
begin
StartTime:= GetTickCount;
repeat
Application.ProcessMessages;
Sleep(1);//能解決CPU100%的問題
until GetTickCount>StartTime+10000;
end;
程式出現Application.Terminate;不回應,別的陳述句是會回應的,求解?
uj5u.com熱心網友回復:
不明白什么問題, 你說的不回應是什么場景?uj5u.com熱心網友回復:
Application.Terminate; 是沒執行到, 還是不回應? 后者的話跟進去看看.uj5u.com熱心網友回復:
沒看到你代碼里哪里用了Application.Terminate;
uj5u.com熱心網友回復:
試下這樣:procedure TForm1.Delay(); var
NumSec:SmallInt;
StartTime:LongInt;
begin
StartTime:= GetTickCount;
repeat
Application.ProcessMessages;
Sleep(10);//能解決CPU100%的問題
until (GetTickCount>StartTime+10000) or Application.Terminated;
end;
uj5u.com熱心網友回復:
不清楚你的Delay(); 是什么時候呼叫的Application的Terminate來終止程式的,Close、FormCloseQuery、Halt 都將不會執行,
不會回應你的代碼。
uj5u.com熱心網友回復:
sleep(10000)就好了。uj5u.com熱心網友回復:
記得老式Pascal中有個Crt單元里有個Delay(),可直接延時。。好懷念啊!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/133611.html
標籤:VCL組件開發及應用
