希望做个线程某固定时间间隔后就执行某方法,但总是不成功,希望大家给看看,谢谢!
代码如下:
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;
代码如下:
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;
直接在execute里循环
procedure ThreadUpdate.Execute;
begin
while not Terminated do
begin
myfunction;
sleep(100);//也可以用TEvent.WaitFor()
end;
end;
如果按照你说的方法,myfunction是能被调用,可以会报莫名的错~,如果单独调用该方法是没有问题的。
不知道为什么
Myfunction 部分的代码没问题,单独调用已经可以了,只是在上面代码中省略了这部分。
不过TIMER不能用还是觉得很奇怪,我过几天再结贴吧,希望知道的能给我个答案。