Ple*_*rds 2 delphi udp windows-services delphi-xe3
读了这个问题:
德尔福Windows服务的设计,我看到大部分的设计师在使用下面这段代码OnExecute的TService或TThread方法,以保持服务活着.
while not Terminated do
begin
// do something
end;
Run Code Online (Sandbox Code Playgroud)
但是,如果我需要(和我一样)来创建一个服务(使用印),以便发回一些认证数据由主应用程序发送的消息,我该怎么用这个代码做回应,忽略它或把一些Sleep()在它?
Indy TIdTCPServer和TIdUDPServer组件是多线程的,因此您根本不需要使用该TService.OnExecute事件.你可以只激活它们TService.OnStart的事件,并在其停用TService.OnStop事件,然后分配处理的TIdTCPServer.OnExecute,并TIdUDPServer.OnUDPRead在需要的事件.这两个事件都已经为您循环,因此您不需要while not Terminated循环.只需根据需要读取/处理一个请求,然后退出,并等待下一个事件重复.让服务器处理引发的任何异常.而且请记住,TIdUDPServer有一个ThreadedEvent属性,默认为false,所以你应该把它设置为True一个服务里面.
| 归档时间: |
|
| 查看次数: |
1357 次 |
| 最近记录: |