我写了一个服务程序,定时读取机器上的某个文件并写到数据库中。
可是,程序无法定时执行。麻烦帮忙看一下!
我在服务程序中加了一个TTimer,将需要定时执行的代码放在了OnTimer中,
其中Interval是从注册表中读出来的。
注册表的读取是放在AfterInstall中,可是现在执行完并没有执行OnTimer中的程序。我已将服务install,并启动后了。请问各位这是怎么回事?是我哪个地方写的还有问题?

解决方案 »

  1.   

    注意,这种方法只限于计时精度要求不高的情况下procedure TService1.ServiceExecute(Sender: TService);
    const
      Interval : DWORD = 1000;
    var
      BeginTime : TDateTime;
    begin
      //开始运行时间
      BeginTime := GetTickCount();
      while not Self.Terminated do
      begin
        if MilliSecondOf(GetTickCount()-BeginTime)>=Interval then
          SomeThing();    BeginTime := GetTickCount();
      end;
    end;
      

  2.   

    在ServiceStart里控制是否启用你的timer