首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Delphi中使用getTickCount创建等待

在Delphi中使用getTickCount创建等待
EN

Stack Overflow用户
提问于 2013-12-13 16:14:22
回答 1查看 9K关注 0票数 0

我正在创建一个需要运行的过程,然后等待10分钟才能继续运行。

代码语言:javascript
复制
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语句时,它将检查它是否为真,然后继续如何使它保持不变,直到语句为真?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-13 16:18:42

天真地回答是,您需要一个while循环:

代码语言:javascript
复制
while GetTickCount() < StartTime+600000 then
  ;
SecondRun();

或者更容易读到,一个repeat循环:

代码语言:javascript
复制
repeat
until GetTickCount() >= StartTime+600000;
SecondRun();

但这样做是错误的。你会启动处理器10分钟,却一无所获。我要说明的是,如果您的系统已经运行了49天,那么您将进入GetTickCount封装,然后测试的逻辑就会有缺陷。

操作系统有一个功能来解决您的问题,它被称为Sleep

代码语言:javascript
复制
Sleep(600000);

这会将调用线程阻塞指定的毫秒数。因为线程是块,所以线程在等待时不会占用CPU资源。

这将使调用线程没有响应能力,因此它通常是在后台线程中执行的,而不是应用程序的主线程。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20570992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档