Ich habe einen eigentlich recht simplen Dienst, welcher beim start über shellexecute ein anderes Programm aufruft. Wenn dieses andere Programm beendet wird, piped dieses eine Message zum Service, welcher sich daraufhin beenden soll. dazu verwende ich einen Timer, welcher eine Variable überwacht, die duch die Message verändert wird:
Delphi-Quellcode:
procedure TEasyServer.Timer1Timer(Sender: TObject);
begin
if uPipesService.bShutDown then
begin
Timer1.Enabled := False;
FServer.ShutDownServer; //TPipeServer
FServer.Free;
EasyServer.DoStop;
end;
end;
Die Message kommt offensichtlich an, denn der Status des Service wechselt zu "wird beendet"... aber er beendet sich nicht. Es gibt nirgends irgendwelche Schleifen oder ähnliches... ich hab keine Erklärung, warum der Prozess weiter läuft.
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.