Hallo,
also ich würde die Daten in einen Buffer schreiben (Array[0..X] of String oder so (genug Plätzte für ca. 2 Sekunden) vielleicht mit TCriticalSection oder so) und dann nicht die Methode direkt aufrufen sonder per Postmessage das Fenster informieren und dort den Index des eben eingetragenen Strings übergeben.
Das sollte gehen.
Gruß, Chris
Edit für Praktisch:
Delphi-Quellcode:
procedure TfrMain.IdTCPServer1Execute(AContext: TIdContext);
var
request :string;
naechsterIndex: Integer;
begin
request := acontext.Connection.IOHandler.ReadLn;
MyCriticalSection.Enter;
try
naesterIndex := (letzterInd +1) mod MAXINDEX_BUFF;
letzterInd := naesterInd;
MyDatenArr[naesterIndex] := request;
PostMessage(Form.Handle, WM_DODECODE_COMMANDS, 0, naesterInd);
finally
MyCriticalSection.Leave;
end;
end;