天啊怎么在线程中自动生成的定时器象是没有用的,根本不执行呀(50分)

  • 主题发起人 主题发起人 想上进的菜鸟
  • 开始时间 开始时间

想上进的菜鸟

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure tftpget.execute;
var ftpstrings:string;
begin
fgrelaytime:=ttimer.Create(application);
fgrelaytime.interval:=1000;
fgrelaytime.OnTimer:=brelaytime;
.......
end;
为什么brelaytime在fgrelaytime.enabled:=true 时根本不执行的为什么.
 
ttimer.Create应该是基于窗体的,线程中也是一样
给个例子参考一下:
procedure TForm1.Button1Click(Sender: TObject);
begin
// CreateWav(0,0,0,'c://1.tst');
if not Assigned(m_Timer) then
begin
m_Timer := TTimer.Create(self);
m_Timer.Interval := 1000;
m_Timer.Enabled := True;
m_Timer.OnTimer := Timer1Timer;
end
else
begin
m_Timer.Free;
m_Timer := nil;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(m_Count);
Caption := IntToStr(m_Count);
end;
 
现在在主线程程序中写了个子线程做为那个线程中的类似定时器的,可是时间上总是不准的,因为时间总是不对的,可能因为由于CPU分时间片给多线程的不知那个时间片怎么得到的呢,
 
用api函数,具体见陈宽达的<delphi深度历险>
 
工作线程没有消息循环,所以也不能响应timer消息。楼上推荐的那本书不错,对定时器这部分讲的非常细。建议你看看
 
线程里面哪里有句柄让Timer发送回调函数?你不能在线程里面创建Timer,不过可以利用线程
调用机制,实现线程Timer啊!
 
我已用线程勉强完成这个定时的东西了。
 
后退
顶部