Ich verstehe ehrlich gesagt nicht, wo das Problem ist?
Du kannst doch im OnExecute-Event einfach die AddUser(newUser : String) Prozedur aufrufen, die als Public in deiner Mainformklasse deklariert ist. Auf jedenfall musst du da nichts mit Synchronize aufrufen! Das müsstest du nur, wenn du in einem "echten" Thread eine Prozedur des MainThreads aufrufen willst.
Wenn du Synchronize benutzen willst (Synchronize tut nichts anderes als das Programm anzuweisen, den Mainthread zu benutzen), benutzt man im Allgemeinen sog. Wrapper. Das ist eine Prozedur, die den Aufruf der Prozedur übernimmt (wrapper werden meistens nur im Zusammenhang von Ereignisbehandlungsroutinen verwendet). Ein Beispiel:
Delphi-Quellcode:
procedure TMyThread.mAddUser;
begin
AddUser(aname);
end;
procedure TMyThread.Execute;
begin
Synchronize(mAddUser);
end;
Aber
IMHO ist Synchronize bei den Indys fehl am Platze!