爲了簡化Inno Setup,您可以使用GetTickCount
調用。
GetTickCount函數的解析度僅限於系統計時器的分辨率,通常在10毫秒到16毫秒的範圍內。
因此,它不會在2000毫秒(或任何你想要的值)時精確超時,但足夠接近以便被接受。
你必須知道的其他限制是:
所經過的時間存儲爲DWORD值。因此,如果系統連續運行49.7天,時間將回到零。
在代碼中,它顯示是這樣的:
[Code]
function GetTickCount: DWord; external '[email protected] stdcall';
procedure WaitForTheCondition;
const
TimeOut = 2000;
var
InitialTime, CurrentTime: DWord;
begin
InitialTime := GetTickCount;
while not Condition do
begin
CurrentTime := GetTickCount;
if ((CurrentTime - InitialTime) >= TimeOut) { timed out OR }
or (CurrentTime < InitialTime) then { the rare case of the installer running }
{ exactly as the counter overflows, }
Break;
end;
end;
以上功能不健全,在罕見的情況下即是目前運行計數器溢出(每49.7天一次機器持續運行),因爲一旦發生溢出就會超時(可能在所需等待之前)。
嗨Jachguate,它運行良好。真的感謝! –