Edit: Delphi Version ist nicht 5 sondern 7 und 2007
Hallo ,
mal ne kleine Frage am Rande...
Die Methode ServiceExecute bei einem Dienst läuft die im Hauptthread?
Der Dienst reagiert auf Netzwerkanfragen und führt dann in den
TCP/
IP-Server-Unterthreads
Komponenten aus...und die sind zum Teil nicht threadsicher, deswegen werden sie mit der der Methode
Code:
TThread.Synchronize(Thread,TCmdData(cmdlist.Objects[cmdlist.IndexOf(cmd)]).ProcPointer);
ausgeführt. Nur bekomme ich ab und zu (und nur bei einem von vielen hundert Kunden) die
Exception ins Lock
"CheckSynchronize wurde vom Thread $1084 aufgerufen, der NICHT der Haupt-Thread ist..." ...und das wars dann mit dem Dienst.
So rufe ich checksyncronize auf
Code:
procedure TService1.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
ServiceThread.ProcessRequests(True);
Classes.CheckSynchronize;
end;
end;