![]() |
Services nur zu einem Zeitfenster den Stop zulassen
Hallo,
ich hab hier einen kleinen Service, der nur zu einem bestimmten Zeitfenster beendet werden darf, dh. ich möchte nur dann den Stop über den Dienstemanager zulassen, wenn es wirklich geht und der Dienst sich gefahrlos beenden kann. Sollte dies momenten nicht möglich sein, dann sollte der Dienst sich nicht beeenden, aber wenigstens versuchen seine Tätigkeit zu beenden um bei einem 2. Stop-Aufruf für das Ende vorbereitet zu sein. Dienst startet - wartet auf Zeitpunkt (kann beendet werden) - Zeitpunkt eingetroffen, Haupttätigkeit ausführen (kann nicht beendet werden) - Haupttätigkeit ausführen + 1. Stopsignal (versucht sein Tätigkeit zu beenden) - Haupttätigkeit ausführen + 2. Stopsignal (beendet wenn möglich) - Dienst wartet auf neuen Zeitpunkt (wenn nicht gestoppt) Das Problem ist folgendes: Wenn ich das 1. mal Stop drücke, so setze ich im Stop-Event des Dienstes die Variable Stopped auf False. Der Dienstemanager gibt dann eine Fehlermeldung zurück. Versuche ich gleich darauf noch einmal den Dienst zu beenden und der Dienst ist immer noch nicht dazu bereit, dann erscheint wieder eine Fehlermeldung, aber der Dienst ist trotzdem beendet. Wie kann ich dies verhindern Gruss Gremlin. |
Re: Services nur zu einem Zeitfenster den Stop zulassen
Hallo,
ich glaube nicht, dass es unter Windows möglich ist, das Stoppen zu verhindern. Stell dir einen wildgewordenen Dienst vor und der Admin kann den nicht Stoppen/Beenden. Du du das wegen "Haupttätigkeit soll nicht unterbrochen werden" brauchst, würde ich versuchen, die Arbeit in kleinere Häppchen zu unterteilen (serialisieren). Die Zwischenergebnisse packst irgendwohin (registry ?) und protokollierst so mit, wie weit der Dienst gekommen ist. Heiko |
Re: Services nur zu einem Zeitfenster den Stop zulassen
Hm, also ich hab in Erinnerung, schon solche widerspenstigen Dienste gehabt zu haben, die sich nur durch einen Systemneustart "beenden" ließen.
Führst du eine Log-Datei für deinen Dienst? Wenn ja, solltest du dort auch Stop-Versuche festhalten und dazu den Status des Dienstes. Vielleicht kriegst du darüber was brauchbares. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz