运行 持续服务 - Delphi

Running Service Continuously - Delphi

我的服务好像不连续运行。

procedure TService1.ServiceExecute(Sender: TService);
begin
While not Terminated do
  ServiceThread.ProcessRequests(True);
end;

这就是我目前拥有的,应该会保留服务 运行ning,但它并没有这样做。

当服务从 Windows 服务管理器启动时,这段代码仅 运行s。获得服务 .exe 文件后,使用命令提示符通过 /install 命令行参数启动它,然后使用 net start <your-service-name> 或“开始”菜单中“管理工具”中的“服务管理”对话框或控制面板启动服务。

如果您想 运行 Delphi 调试器中使用服务,请使用管理权限启动 Delphi 并附加到 运行宁进程。但更明智的做法是将所有逻辑放在单独的单元中,并将项目的单独版本作为 'plain exe' 运行 您可以在调试器中 运行 的项目过程。

需要 ServiceThread.ProcessRequests 调用以允许处理服务管理器请求(starting/pausing/stopping 服务),但您不要自己调用它,也不应覆盖 TServiceThread 实例。默认的 TServiceThread 实例负责调用 ProcessRequests 并调用 TService 实例的 OnStart/OnStop 等处理程序。

我通常在 TService 实例 OnStart 事件处理程序中创建一个线程,并让该线程 运行 执行服务功能。

如果服务管理器在短时间内停止了您的服务,这通常表明 ProcessRequests 调用未正确调用或调用不够频繁。