Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#4

AW: Auf Zeitpunkt überwachen

  Alt 19. Nov 2020, 13:16
Also, das mit dem Timer = seeeeehrrrr böööse halte ich für Quatsch.

Seit gefühlt 25 Jahren nutze ich Timer, ohne dass dabei je ein Problem aufgetreten ist.

Auch in Services hab' ich schon Timer genutzt, problemlos, um damit zu steuern, wann welche Aufgabe zu erledigen ist, z. B. 1 Job um 0:00 Uhr, ein anderer um 3:00 Uhr, weitere stündlich, jeweils zur vollen Stunde plus 15 Minuten (also immer um viertel nach), .... Alles in einem Service. Und der lief über viele Jahre anstandslos.

Zum Zeitpunkt:

Die Zeit in Millisekunden bis zum verlangten Zeitpunkt ausrechnen. Beim Timer das Intervall mit der berechneten Anzahl von Millisekunden belegen und den Timer aktivieren. Der "Auslösefehler", die Pünktlichkeit, liegt in 'nem Bereich von +/- 1 Millisekunde. Wenn man's nicht genauer braucht, sollte das reichen.

Um's zu vereinfachen, kann man sich auch 'nen Nachfolger vom TTimer bauen, der beim Aktivieren (timer.Enabled := True) selbst die Zeitdifferenz ausrechnet und das Intervall setzt und dann die Aktivierung durchführt.

In der Timerroutine wird zuerst der Timer deaktiviert, dann die auszuführende Aufgabe (Prozeduraufruf(e)) erledigt, die Zeit bis zum nächsten Aufruf des Timers berechnet, das Intervall gesetzt und der Timer aktiviert.

Ok: Das heißt dann auch: Pro Job ein Timer, solang man da nicht hunderte von Timern in einem Service nutzt und die nicht alle zeitgleich "zuschlagen", geht das ohne weiteres.

Muss man halt 3 mal täglich zu definierten Zeiten 'ne Datei aus dem Web laden und einmal täglich die verarbeiteten Ergebnisse in 'ner Datenbank speichern und dann daraus einen Report an 'nen bestimmten Mailverteiler senden, sowie 'ne CSV-Datei mit dem Ergebnis an einer bestimmten Stelle im Netz ablegen, ..., geht das. Für zeitkritische Aufgaben ist sowas natürlich nicht geeignet.

Jetzt würde mich aber wirklich der Grund interessieren weshalb man denn keinen Timer verwenden solle...
Das ist ja das Schöne, man ließt immer nur: Bööööse, darf man nicht. 'ne (wenn auch nur halbwegs) plausiblen Grund hab' ich bisher noch nicht gelesen
  Mit Zitat antworten Zitat