我正在创建一个我需要运行的程序,然后等待10分钟再继续
procedure firstTimeRun(const document: IHTMLDocument2);
var
fieldValue : string;
StartTime : Dword;
begin
StartTime := GetTickCount();
WebFormSetFieldValue(document, 0, 'Username', '*******');
WebFormSetFieldValue(document, 0, 'Password', '*******');
WebFormSubmit(document, 0);
if (GetTickCount() >= StartTime+ 600000) then
begin
SecondRun();
end;
end;
我遇到的问题是,当我到达if语句时,它会检查它是不是真的并继续我如何让它停留并等到语句为真?
答案 0 :(得分:5)
天真的答案是你需要一个while
循环:
while GetTickCount() < StartTime+600000 then
;
SecondRun();
或许更容易阅读,repeat
循环:
repeat
until GetTickCount() >= StartTime+600000;
SecondRun();
但这是错误的做法。你将热处理器运行10分钟,什么都不做。而且我正在掩饰这样一个事实,即如果你的系统已经运行了49天,那么你将会发现GetTickCount
环绕,然后测试逻辑就会出现问题。
操作系统有一个旨在解决您问题的功能,称为Sleep
。
Sleep(600000);
这会阻止调用线程达到指定的毫秒数。因为线程是块,所以线程在等待时不会占用CPU资源。
这会使调用线程无响应,因此通常会在后台线程而不是应用程序的主线程中执行此操作。