【发布时间】:2013-07-25 18:22:56
【问题描述】:
阅读这个问题:
Delphi Windows Service Design,我看到大多数设计师在TService 的OnExecute 或TThread 方法中使用下面的代码,以保持服务活着。
while not Terminated do
begin
// do something
end;
但是,如果我需要(并且我确实)创建一个服务来响应(使用 Indy)主应用程序发送的消息以发回一些身份验证数据,我该怎么处理这段代码,忽略它或在里面放一些Sleep()?
【问题讨论】:
-
你不需要实现
TService类的OnExecute事件方法。这是可选的。 -
TLama 是对的。最好不要使用
OnExecute事件。您应该将该逻辑移至在OnStart事件中启动并在OnStop事件中终止的单独工作线程。如果根本没有分配OnExecute,TService将为您响应 SCM 请求。但是如果分配了OnExecute,则需要手动调用ServiceThread.ProcessRequests(),当OnExecute退出时服务会自行停止。
标签: delphi windows-services udp delphi-xe3