我知道用Application.ProcessMessages但是我想使循环每两秒钟执行一次,如何实现,加上SLEEP不行,会卡进程.还什么其它办法吗?

解决方案 »

  1.   

    用GetTickCount不断的取时间,当时间差大于2000,执行你的循环,这样是不会卡进程的
      

  2.   

    用timer组件,在ontimer里编写入事件,并将其interval属性设置为2000
    或者采用多线程
      

  3.   

    感谢各位,忘了说一点了,是代码是在DLL中,无控件的情况下.
      

  4.   

    我是在远程进程中创建的一个线程加载DLL,这样应该算线程调用DLL吧.
      

  5.   

    自己写一个不会卡的sleep(ms)
    while ms>0 do
    begin
      sleep(50);
      dec(ms,50+1);
      application.processmessage;
    end;
      

  6.   

    使用SetTimer控件两秒钟执行一行,循环里加上Application.ProcessMessages 防止卡死进程procedure ShowCaption;
    begin
      form1.Caption := IntToStr(Random(100));
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      SetTimer(Handle, 0, 1000, @ShowCaption);
    end;killTimer可以停止这个Timer.
      

  7.   

    while ms>0 do
    begin
      sleep(50);
      dec(ms,50+1);
      application.processmessage;
    end;有了SLEEP还是会卡啊.