![]() |
Indy: Empfangs-Thread beim Client
Hallo.
Ich habe mal wieder eine Frage zu Indy (10) Der Client hat ja keine eigenes OnExecute Event. Darum wollte ich einen eigenen Thread verwenden, welcher ständig auf Daten abfragt. Aber wie übergebe ich dem Thread die Indy-Verbindung? Wenn ich einfach das Indy-Objekt übergebe funktioniert es nicht. So mache ich es bisher:
Delphi-Quellcode:
Der Thread:
TMain = class(TForm)
startClient: TButton; IdTCPClient1: TIdTCPClient; procedure startClientClick(Sender: TObject); private ClientThread: TClientThread; end; ... procedure TMain.startClientClick(Sender: TObject); begin self.IdTCPClient1.Port := 2010; self.IdTCPClient1.Host := 'localhost'; self.IdTCPClient1.Connect; self.ClientThread := TClientThread.Create(true); self.ClientThread.Connection := self.IdTCPClient1; self.ClientThread.OnDaten := self.Daten_empfangen; self.ClientThread.Resume; end;
Delphi-Quellcode:
Der Try-Blcok wird immer mit einer exception abgebrochen. Es besteht im Htread aoch keine Verbindung
TClientThread = class(TThread)
private FIndyClient: TidTCPClient; FIndyString: String; procedure ThreadEvent; public property Connection: TidTCPClient write FIndyClient; procedure execute; override; end; ... procedure TClientThread.execute; begin while not Terminated do begin try //lesen self.FIndyString := self.FIndyClient.IOHandler.ReadLn; //Event werfen except end; end; end; (wenn ich sie mit .Connected abfrage). Was versteh ich da falsch? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz