2

この質問を読んで: Delphi Windows Service Design、ほとんどのデザイナーがサービスを維持するためにOnExecuteTServiceまたはメソッドで以下のコードを使用することがわかりました。TThread

while not Terminated do
begin
  // do something
end;

しかし、認証データを送り返すために、メインアプリケーションから送信されたメッセージに (Indy を使用して) 応答するサービスを作成する必要がある場合 (実際に作成している場合)、このコードをどうするか、それを無視するか、何かを入力Sleep()します。それ?

4

1 に答える 1

7

IndyTIdTCPServerとコンポーネントはマルチスレッド化されているため、イベントTIdUDPServerを使用する必要はまったくありません。TService.OnExecuteイベントでそれらをアクティブ化し、TService.OnStartイベントで非アクティブ化してから、必要に応じておよびイベントTService.OnStopにハンドラーを割り当てることができます。両方のイベントは既にループされているため、ループする必要はありません。必要に応じて 1 つのリクエストを読み取り/処理し、終了して、次のイベントが繰り返されるのを待ちます。発生した例外はサーバーに処理させます。にはデフォルトで False のプロパティがあるため、サービス内で True に設定する必要があることに注意してください。TIdTCPServer.OnExecuteTIdUDPServer.OnUDPReadwhile not TerminatedTIdUDPServerThreadedEvent

于 2013-07-25T18:55:03.077 に答える