如果用Sleep(毫秒)会让应用程序停止响应我一般使用Timer,Timer控件会在单独的线程中运行,不会影响到主线程。

解决方案 »

  1.   

    procedure Delay(MSecs: DWORD); 
    var
      BeginTime: DWORD;
    begin
      BeginTime := GetTickCount;
      repeat
      until GetTickCount - BeginTime >= MSecs;
    end;
      

  2.   

    同意xzhifei(飞) 的
    我业是用这个写的函数
    然后调用的
      

  3.   

    刚才掉了一句,“ Application.ProcessMessages”,Sorry,如果不加这句的话,效果跟Sleep函数差不多,呵呵!!procedure Delay(MSecs: DWORD); 
    var
      BeginTime: DWORD;
    begin
      BeginTime := GetTickCount;
      repeat
        Application.ProcessMessages;
      until GetTickCount - BeginTime >= MSecs;
    end;
      

  4.   

    1)用Timer控件
    2)Code;
    procedure Delay(Second:integer);
    var
      OldTick,NowTick:integer;
    begin
      OldTick:=GetTickCount;
      NowTick:=GetTickCount;
      while NowTick-OldTick<Second*1000 do
        NowTick:=GetTickCount;
    end;
      

  5.   

    最好加上 Application.ProcessMessages
    就很完善了