[英]Delphi Service to Listen to TCP or UDP
閱讀這個問題: Delphi Windows服務設計 ,我看到大多數設計師在OnExecute
的TService
或TThread
方法中使用下面的代碼,以保持服務的活力。
while not Terminated do
begin
// do something
end;
但是,如果我需要(並且我這樣做)創建一個服務來響應(使用Indy)主應用程序發送的消息以便發回一些身份驗證數據,我該怎么處理這個代碼,忽略它或者放一些Sleep()
在里面?
Indy的TIdTCPServer
和TIdUDPServer
組件是多線程的,因此您根本不需要使用TService.OnExecute
事件。 你可以只激活它們TService.OnStart
事件,並在其停用TService.OnStop
事件,然后分配處理的TIdTCPServer.OnExecute
和TIdUDPServer.OnUDPRead
需要的事件。 這兩個事件都已為您循環,因此您不需要while not Terminated
循環。 只需根據需要讀取/處理一個請求,然后退出並等待下一個事件重復。 讓服務器處理引發的任何異常。 請記住, TIdUDPServer
的ThreadedEvent
屬性默認為False,因此您應該在服務中將其設置為True。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.