Wie ich schon schrieb: Mittels Wrapper ist es möglich mit Synchronize Paramater zu benutzen. Ein Wrapper ist eine Prozedur, ohne Parameter, die die wiederum die gewünschte Prozedur aufruft, mit den entsprechenden Parametern. Dazu kannst du z.B. die Parameter vor dem Aufruf von Synchronize in Variablen speichern und dann diese Variablen im Wrapper benutzen. So z.B.:
Delphi-Quellcode:
procedure TForm1.AddUser(
name:
string; id: integer);
begin
ListBox1.Add(aname);
...
end;
//globale Variablen die als temporärer Speicher der Parameter verwendet werden
var
aname:
string;
aid: integer;
procedure TForm1.AddUserWrapper;
//wrapper von AddUser
begin
AddUser(aname, aid);
//aufruf der richtigen Prozedur
end;
procedure TForm1.TIdTCP....Execute;
//Execute der Indy
begin
with AThread.Connection
do
begin
aname := '
labersack';
//Wertzuweisung der "Parameter"
aid := 7483;
Synchronize(AddUserWrapper);
//threadsicherer Aufruf der AddUser-Prozedur mittels Wrapper
end;
end;
Code ist "OnTheFly" geschrieben.
Ich hab das jetzt sehr ausführlich gestaltet, aber bitte nicht vera***** fühlen. Ich gehe eigentlich davon aus, dass du recht viel Ahnung hast; doch besser ein wenig ausführlicher als zu schlecht erklärt!
Somit müsstest du dein Problem eigentlich lösen können. Eigene Threadklassen sind
IMHO unnötig.