Hallo zusammen,
nachdem ich mich entschlossen habe mein Projekt ohne die
VCL-Unterstützung zu realisieren stehe ich nun (wie zu erwarten war) vor einem Problem. Ich möchte gerne einen
TCP Server in meinem Service unterbringen und weiß nicht so wirklich wie ich das anstellen soll.
Ich habe
das Beispiel von Assarbad durchgearbeitet und mir einen Service nach meinen Wünschen zusammengebastelt. Doch die Schleife in der ServiceMain Procedure vergeudet leider nur (wie zu erwarten...) 99% der Rechenzeit:
Delphi-Quellcode:
repeat
if not SvcPaused then
begin
end;
until SvcStopped;
Leider geht hier auch
das Beispiel der MSDN nicht weiter... anstatt die CPU zu blockieren warten die mit WaitForSingleObject auf ein Event, welches Sie im ControlHandler auslösen falls der Service beendet wird.
Vor ewigen Zeiten habe ich mal einen
TCP-Server in ein Konsolenprogramm gepackt (auch nach irgendeinem Tutorial...) und damit ein wenig rumgespielt. Ich musste dabei nichts weiter tun als die Komponente zu erzeugen und dafür zu sorgen, dass das Programm offen bleibt. Dazu hab ich einfach auf die nächste Eingabe in der Konsole gewartet.
So nun habe ich mir gedacht bei meinem Service könnte es doch vielleicht auch so laufen: Ich erzeuge bei Initialisieren die Komponente und sorge einfach dafür, dass der Service "offen bleibt". Nur wie mache ich das? die Endlosschleife ist ja nunmal kein probates mittel und mit dem Eventkram dürfte mein Service ja bei WaitForSingleObject steckenbleiben, oder? Die Frage ist nun wie bekomm ich meinen
TCP-Server in dem Service unter?
Gruß
Mr_G