加载中…
个人资料
jepsen1
jepsen1
  • 博客等级:
  • 博客积分:0
  • 博客访问:147,777
  • 关注人气:42
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

Delphi四种延时方法

(2011-01-15 14:25:07)
标签:

杂谈

1、挂起,不占CPU
 sleep

 

2、不挂起,占cpu
  procedure Delay(msecs:integer);
        var
        FirstTickCount:longint;
        begin
        FirstTickCount:=GetTickCount;
        repeat
        Application.ProcessMessages;
        until ((GetTickCount-FirstTickCount) >= Longint(msecs));
        end;

 

3、定时器
   procedure timerfun

(handle:Thandle;msg:word;identer:word;dwtime:longword);stdcall;
        begin
        showmessage('到点了');
        killtimer(handle,identer);//关闭定时器
        end;
        //其中的identer是定时器的句柄
        procedure TForm1.Button1Click(Sender: TObject);
        var
        identer:integer;
        begin
           identer:=settimer(0,0,2000,@timerfun);
           if identer=0 then exit; //定时器没有创建成功。
        end;

 

4、不占CPU不挂起
 function TForm1.HaveSigned(MaxWaitTime: Cardinal): Boolean;
        var   I:Integer;
        var   WaitedTime:Cardinal;
        begin
                  WaitedTime:=0;
                  while      (WaitedTime
                  begin
                          SleepEx(100,False);
                          Inc(WaitedTime,100);
                          Application.ProcessMessages ;
                  end
        end;

0

阅读 收藏 转载 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有