Timer wiederholt mit unterschiedlichen Intervallen aufrufen
-
Hallo Zusammen,
ich hänge gerade fest und die Suche im Netz konnte mir nicht weiter helfen.
Ich möchte in meinem Programm einen Timer wiederholt nacheinander aufrufen mit verschiedenen Intervallen.
Damit rufe ich den Timer immer wieder mit verschiedenen Intervallen aus einem Array auf.
for (int i=1; i <= anzahl;) {
t5.Interval = zeitarray[i];
t5.tíck += new EventHandler(t5_tick);
t5.start();
}i++; wird dann im t5.tick durchgeführt.
Das Programm hängt sich in der Schleife immer wieder auf. Ziel ist es, nachdem t5_tick durchlaufen ist den timer neu aufzurufen mit dem nächsten Intervall aus dem Array.
Kann mir da jemand weiter helfen ?
-
Einfallslos schrieb:
for (int i=1; i <= anzahl;) {
t5.Interval = zeitarray[i];
t5.tíck += new EventHandler(t5_tick);
t5.start();
}Damit hängst Du #anzahl Eventhandler an das tick-Event was natürlich Quatsch ist.
1. Ein Eventhandler
2. Timer mit ersten Interval starten
3. Innerhalb des Eventhandlers Timer sofort stoppen.
4. Am Ende des Handlers Interval neu setzen (nächter Arrayeintrag) und Timer wieder starten.(Die verstrichene Zeit zwischen stop und neustart kann evtl von der nächsten Intervalzeit abgezogen werden, falls das wichtig ist.)
-
Super danke! So funktioniert es.
Da stand ich irgendwie aufm Schlauch... wenn man das sieht ist es logisch.
Die Zeit muss nicht abgezogen werden. Da ist genügend Spielraum vorhanden.
Nochmal 1000 dank !!!
Ist die Intervallgröße eigendlich begrenzt?
-
Einfallslos schrieb:
i++; wird dann im t5.tick durchgeführt.
Sollte es aber nicht. Das Tick-Event tritt doch erst nach Ablauf von
Interval
auf. Inzwischen werden munter unzählige weitere Schleifendurchläufe abgearbeitet und der Eventhandler in jedem nochmal registriert.
WennTick
dann tatsächlich eintritt, wird der Eventhandler so oft ausgeführt, wie er vorher registriert worden ist. Das ist aber abhängig von der Geschwindigkeit des ausführenden Rechners, nicht von der Variablenanzahl
.Wie kann sich überhaupt der Scope von
i
in den Eventhandler erstrecken?
-
das erklärt mein (ehemaliges) Problem. Dabei hat sich der Rechner aufgehangen.