Die Indys funktionieren nur so, dass der Client beim Server anfragt und eine Antwort erhält. (Ich bin da aber auch nicht ganz sattelfest.)
Hier gab es mal etwas zum Thema:
http://www.delphipraxis.net/171226-i...o-clients.html
Deinen IndyClient solltest Du m.E. im Thread erzeugen, damit die Trennung vom Mainthread gegeben ist.
Ich habe das so gelöst:
Delphi-Quellcode:
{ TThreadTcp }
constructor TThreadTcp.Create(aGuiManager: TsoGuiManager);
begin
fGuiManager := aGuiManager;
FreeOnTerminate := True;
IdTCPClient1 := TIdTCPClient.Create;
IdTCPClient1.Host := gIdTCPClient.Host;
IdTCPClient1.Port := gIdTCPClient.Port;
inherited Create(False);
end;
procedure TThreadTcp.Execute;
var
aPackage: TsoGuiDataPackage;
S: String;
begin
while (not Terminated) and Assigned(fGuiManager) do
begin
... Kommandos senden und Ergebnisse verarbeiten
... Zugriffe auf Bereiche des Mainthreads mit CriticalSections absichern
end;
FreeAndNil(IdTCPClient1);
end;
So funktioniert das bisher ganz gut aber es kann schon sein, dass das noch nicht ganz "state of the art" ist.