Laden...

mehrere Timers verwalten

Erstellt von MrLOvely vor 12 Jahren Letzter Beitrag vor 12 Jahren 4.934 Views
Thema geschlossen
M
MrLOvely Themenstarter:in
8 Beiträge seit 2011
vor 12 Jahren
mehrere Timers verwalten

Hey Leute,

Ich bin auf ein Problem geraten, und zwar ich möchte mit einem Objekt vom Typ Timer mehrere Timer verwalten.(d.h alle im richtigen Zeitpunkt auslösen )
wonach soll ich denn suchen, gibt es schon so was in .Net?!

P:S: die Klasse Timer bietet nicht viel Möglichkeiten .

Danke im Voraus.

VG

VG

296 Beiträge seit 2007
vor 12 Jahren

Hallo MrLOvely,

was hast du vor und was verstehst du unter verwalten?
Die Timer lösen in dem Interval aus, den du angibst.

Nach welchen Möglichkeiten suchst du?

Gruß

G
538 Beiträge seit 2008
vor 12 Jahren

Und was hält dich davon ab eine Liste, Array oder andere Collection zu benutzen.

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

M
MrLOvely Themenstarter:in
8 Beiträge seit 2011
vor 12 Jahren

hey myUnderTakeR

also ich möchte nur mit einem Timer Objekt mehrere Timers auslösen, die verschiedene Intervallen haben, und die tretten in verschiedenen Zeitzonen auf.

Z.B : t1 = 360s, t2= 300s; t3= 50s;

gibt es so was in .Net, das Zeitmessen von delta t oder irgnedsowas?!

VG

296 Beiträge seit 2007
vor 12 Jahren

Hallo MrLOvely,

dann nimm lieber mehrere Timer und lass sie die gleiche Ereignisbehandlung ausführen.

Für die Verwaltung kannst du das Ganze in eine Klasse kapseln und dort, wie Grumbler85 schon sagte, alle in eine Collection packen und gleichzeitig starten, stoppen, etc.

Bei den Auflösungen du die angibst (360s, 300s, 50s) solltest du mit der Lösung keine Probleme haben.

Gruß

M
MrLOvely Themenstarter:in
8 Beiträge seit 2011
vor 12 Jahren

ja klar ist auch eine Möglichkeit, aber jedes Mal ein neues Objekt zu erzeugen, macht das Programm nicht Performance. die Idee mit der Collection ist nicht schlecht.
Ich werde es probieren.

Danke

VG

296 Beiträge seit 2007
vor 12 Jahren

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil

2.298 Beiträge seit 2010
vor 12 Jahren

... aber jedes Mal ein neues Objekt zu erzeugen, macht das Programm nicht Performance. ...

Worauf beziehst du das?

Eine Collection halt ich auch nicht für notwendig. Schließlich hast du die 3 Timer. Die haben einen festen Interval. Daran ändert die Collection nichts.

Erstelle einfach wie vorgeschlagen eine Klasse. Die hält als Instanzfelder die 3 Timer, bietet eine Methode Start und Stop und verarbeitet die Timer-Ticks.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

M
MrLOvely Themenstarter:in
8 Beiträge seit 2011
vor 12 Jahren

hallo inflames2k,

nein es können mehrere EventTimers auftreten für n Timers.
die sind Variant. die Idee dass für Jede Timer ein new zu erzeugen halte ich für schlecht.

VG

2.298 Beiträge seit 2010
vor 12 Jahren

Da wirst du aber nicht drum herum kommen?

Es sind n Timer. Für die n-Timer musst du Instanzen erstellen.

Und auch wenn du eine Collection vom Timern hältst, müssen alle beinhalteten Timer instanziiert sein.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

G
538 Beiträge seit 2008
vor 12 Jahren
new

ist kein böses Wort.. das brauch man in C# und ist ganz toll 😃

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

M
MrLOvely Themenstarter:in
8 Beiträge seit 2011
vor 12 Jahren

@Grumbler85,

Single Code Prinzip, "einmal instanzieren, mehrmals verwenden".
ist schon böse , da muss man aufpassen , an Speichermanagement denken.

VG

296 Beiträge seit 2007
vor 12 Jahren

Hallo MrLOvely,

ich will dir zwar dein Prinzip, dessen Sinn mir nicht ganz klar wird, nicht ausreden, aber meinst du wirklich, bei einer .Net Anwendung, wo die Laufzeitumgebung selbst einfach schon mehrere MB im Speicher belegt, musst du noch irgendwelche Speichernanforderungen runteroptimieren, weil du mal grad (ein paar tausend?) Timer brauchst, die dann nur einen Bruchteil des genutzen Speichers ausmachen?

M
MrLOvely Themenstarter:in
8 Beiträge seit 2011
vor 12 Jahren

@Grumbler85

ja klar an der Stelle hast du Recht, bei einer .Net Anwendung legt man nicht so viel Wert auf Speicher. aber Trotzdem von meiner Sicht ein gutes Design macht ein gutes optimiertes Programm, leider viele Programmierer hocken was rein ohne an so was nachzudenken und am Ende die Wahrscheinlichkeit der Fehler zu gross.
Das Betriebssystem hat ja nur einen Timer am Endeffekt, auch wenn du 1000 timer anlegst.

VG

296 Beiträge seit 2007
vor 12 Jahren

und am Ende die Wahrscheinlichkeit der Fehler zu gross.

Das kann ich nicht bestätigen. Die Wahrscheinlichkeit, dass du bei einer Lösung, die irgendwelche Deltas zwischen Intervallen berechnet und dann einen Timer danach manipuliert, Fehler machst halte ich für wesentlich größer.

just my 2 cents

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo zusammen,

die Möglichkeit, nur einen Timer zu verwenden und dessen Intervall immer auf das Delta bis zum am nächsten liegenden Zeitpunkt zu setzen, wurde noch nicht genannt.

Das ändert allerdings auch nichts daran, dass hier die einfachste Lösung, die beste ist. Um Performance braucht man sich bei den genannten Intervallgrößen überhaupt keine Gedanken zu machen, um Speicherverbrauch ebenfalls nicht und sollte es daher auch nicht tun. Insofern können und sollten wir uns lange und unnötige Diskussionen um mögliche Optimierungen sparen. "premature optimization is the root of all evil" wurde ja schon genannt und triff hier vollkommen zu.

herbivore

Thema geschlossen