Seite 3 von 3
Verfasst: 10.06.2008 17:41
von Kaeru Gaman
ok, i.c. thnx...
(mensch ist noch garnicht so lange her, aber keinen plan mehr wo das steckt...)
...aber auch hier bräuchte man ne differenz, ab zeitpunkt SetTimer_() Aufruf...
gibts das nicht mit ner systemzeit als zeitpunkt?
Verfasst: 10.06.2008 17:50
von ts-soft
Weiß nicht, wie Du das meinst. Du setzt das passenste Interval (es gehen
auch mehrere) und den Rest machste im Callback, also selektieren nach
TimerID, bei mehreren Intervallen usw.
Um irgendwas erstmal zu Initialisieren kannste eine statische Variable oder
eine globale nehmen (If TimerAn = #True) o.ä.
Verfasst: 10.06.2008 17:55
von Kaeru Gaman
die Problemstellung von gekkonier war ja nur bedingt ein Regelmäßiger Intervall,
hier die 5min von seinem einen Programm, und die auch "nur" zu Geschäftszeiten.
bei der Generalisierung gehts dann ja nach Datum, Uhrzeit.
wenn ich also kein SetTimer_( ..., Sytemzeit, #einmal ) habe,
muss ich jeden Tag z.B. um Mitternacht meine Liste durchgehen,
und für jeden Task, der heute irgendwann gestartet werden soll,
die Zeitdifferenz berechnen und nen Starter-Callback anlegen,
der dann erst den Turnus startet.
also z.b. für 9:45h den Starter, der dann nen 10min Timer einrichtet,
wenn ein Task ab 9:45 alle 10min laufen soll.
Verfasst: 10.06.2008 18:02
von ts-soft
Wo ist das Problem, Intervall sind 10 * 60 * 1000 (10 Minuten), und wenn
der Timer ausgelöst wird, prüft er ob es nach 0:00 ist.
Laß doch den Timer zwischendurch sinnlos laufen, der erzeugt ein event,
das juckt doch niemanden, der belastet aber die CPU nicht und das
EventLoop von PB auch nicht.
Verfasst: 10.06.2008 18:23
von Kaeru Gaman
achso... der ruft eh immer die selbe routine auf.... (?)
muss man dann halt schlank halten.
ist halt etwas umständlicher für eine aufgabenstellung wie
um 0945 starte dieses Programm
um 1027 mach dieses
um 1203 mach jenes
und von 1500 bis 1600 machst du alle 3 minuten "möp"
Verfasst: 10.06.2008 18:31
von ts-soft
Ich setze meinen intervall etwas kleiner als die benötigte Genauigkeit.
Wenn ausgelöst, prüfe ich ob was zu tun ist, weil z.B. 09:45
Das führe ich aus, bzw. wenn das länger dauert, starte ich dafür einen
Thread, der genau das einmal macht und sich beendet.
Aber ich laße nicht durchweg einen Thread laufen, der auch noch Zeit
abwartet und ähnliches.
Brauche ich eine Minute Genauigkeit, so nehme ich einen Intervall von 20000 oder 30000, je nachdem wie wichtig die Genauigkeit ist. Ist Timer ausgelöst, prüfe ich ob was ansteht und tue es, bzw. tue nichts.
So simple sollte es sein.