1、我用TimeOut延时没用,请问还有没有其它办法延时
2、有没有暂停命令,即程序运行一段后我按一键可暂停,按继续后可在暂停点继续程序的进行

解决方案 »

  1.   

    给你一个函数
    procedure Delay(msecs:integer);
    var
      FirstTickCount:LongInt;
    begin
      FirstTickCount:=GetTickCount;
      repeat
        Application.ProcessMessages;
      until ((LongInt(GetTickCount)-FirstTickCount) >= LongInt(msecs));
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     Delay(5000);
    end;
      

  2.   

    直接就用Sleep多好啊sleep是个API涵数,具体你可以查一下怎么用
      

  3.   

    没什么特殊需要的话,sleep就成了。
      

  4.   

    干嘛要这么做呢?
    你想让程序达到什么样的暂停?连鼠标键盘输入都不响应吗?
    那这个程序还能被你控制吗?我的理解,如果程序不做任何操作的时候他本就应该是暂停的。并没有占用CPU。如果程序须要持续执行任务而且任务写在Idle事件中,那么切换Idle 事件就可以了,如果任务在线程中执行则把线程挂起就可以了。
    哦,对了,也可以把主线程挂起啊,嘿嘿,没碰到过这样的问题。
      

  5.   

    第一个问题解法太多,楼主可根据实际情况选择Sleep,即使使用定时器也未尝不可。
    第二个问题:假如你的程序的主干线程(这里指真正的事务线程而不一定是主线程)是循环性的作业,你可以使用事件(Event),程序初始化时创建一事件并初始化为触发,在每次执行事务前使用
    WaitForSingleObject(...,INFINITE)检测事件是否触发,如果是继续否则它会一直等待。这样就可以通过该事件的触发控制事务线程的执行。当然如果是顺序结构的事务,就需要分段插入WaitFor...
    或者在大作业中插入WaitFor...。