阅读了这个问题: Delphi Windows Service Design,我看到大部分的设计师在TService
的OnExecute
或TThread
方法如下使用此代码,以保持服务活着。德尔福服务听TCP或UDP
while not Terminated do
begin
// do something
end;
但是,如果我需要(和我一样)来创建一个服务(使用印),以便发回一些认证数据由主应用程序发送的消息做出反应,我该怎么办这个代码是什么,忽略它还是放一些Sleep()
呢?
你并不需要实现'TService'类的'OnExecute'事件的方法。这是可选的。 – TLama
TLama是对的。最好不要使用OnExecute事件。您应该将该逻辑移动到一个单独的工作线程,该线程在'OnStart'事件中启动,并在'OnStop'事件中终止。如果'OnExecute'完全不分配,'TService'会为您SCM请求做出响应。但是,如果'OnExecute'分配,你有责任()'手动调用'ServiceThread.ProcessRequests和服务将停止本身时候'OnExecute'退出。 –