Einzelnen Beitrag anzeigen

QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#1

Ist ServiceExecute im Hauptthread

  Alt 8. Dez 2010, 10:49
Delphi-Version: 5
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;
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty ( 8. Dez 2010 um 12:44 Uhr)
  Mit Zitat antworten Zitat