希望做个线程某固定时间间隔后就执行某方法,但总是不成功,希望大家给看看,谢谢!
代码如下:  
ThreadUpdate  =   class(TThread)
    protected
      FTimer:TTimer;
      procedure FTimerTimer(Sender:TObject);
      procedure  Execute;   override;
    public
      Constructor  Create;
      Destructor  Destroy;   override;
    end;
  function myfunction():string;
implementation  constructor   ThreadUpdate.Create;  begin
      inherited   Create(False);
      FTimer:=TTimer.Create(nil);
      FTimer.OnTimer:= FTimerTimer;
      FTimer.Interval :=100; //执行间隔时间
       FTimer.Enabled :=true;
  end;  destructor   ThreadUpdate.Destroy;
  begin
      inherited;
      FTimer.Free;
  end;procedure   ThreadUpdate.Execute;
  begin
   myfunction;
  end;
procedure ThreadUpdate.FTimerTimer(Sender: TObject);
begin
  Execute;
end;

解决方案 »

  1.   

    这段代码应该没有问题啊不过可以不用Ttimer
    直接在execute里循环
    procedure   ThreadUpdate.Execute; 
    begin
      while not Terminated do
      begin
        myfunction;
        sleep(100);//也可以用TEvent.WaitFor()
      end;
    end;
      

  2.   

    你的Myfunction的实现部分呢?没有写好吧
      

  3.   

    谢谢StarRains,终于有人回帖了,那个激动啊~
    如果按照你说的方法,myfunction是能被调用,可以会报莫名的错~,如果单独调用该方法是没有问题的。
    不知道为什么
      

  4.   

    可能是你的myfunction代码有问题,仔细检查一下吧
      

  5.   

    TO qiugaoqil 
    Myfunction 部分的代码没问题,单独调用已经可以了,只是在上面代码中省略了这部分。
      

  6.   

    呵呵,解决了,多谢各位。
    不过TIMER不能用还是觉得很奇怪,我过几天再结贴吧,希望知道的能给我个答案。
      

  7.   

    怀疑你myfunction里调用了线程不安全代码