Habs jetzt nur kurz überflogen, aber ggf. wäre interessant was hier passiert:
Delphi-Quellcode:
case cmd.GetCmd of
SYS_ALIVE : begin
//...
end;
SYS_PING : begin
//...
end;
SYS_AUTHKEY : begin
//...
end;
CMDError : begin
//...
end;
else //kein systembefehl weiter bearbeiten
fJobThread.AddJobToSocket(socket,sJob);
end;
Ist da irgendeine Stelle, die z.B. eine
VCL Komponente ändert. (Repaint?) Das müsstest du dann mit dem Hauptthread synchronisieren.
z.B. statt:
Delphi-Quellcode:
SYS_PING : begin
Label1.Caption := 'TEST';
end;
sollte das so sein
Delphi-Quellcode:
procedure ChangeCaption;
begin
Label1.Caption := 'TEST';
end;
SYS_PING : begin
Synchronize(ChangeCaption);
end;