Zeitsteurung
-
Hi, ich schreibe ein Programm, dass u.a. eine Zeitsteuerung beinhaltet.
Also ich fang mal von vorne an:
das programm arbeitet mit xml datensätze. Die können per programm hinzugefügt und gelöscht und bearbeitet werden.
U.a. ist in jedem datensatz ein element drin, das eine Zeitangabe aus einer MaskedTextbox enthält. (also z.b. 16.11.2007 16:30) Diese zeitangaben sind hinten immer mit :15,:30,:45 oder :00.
Nun möchte ich, immer wenn dieses Programm läuft, im Hintergrund neben den anderen sachen, dass es immer checkt, ob eines dieser datensätze (diese liegen dann schon als merdimensionales Array vor) eine bestimmte zeit enthält.
Das soll so aussehen:
Immer um xx:00, xx:15, xx:30, xx:45 Soll geprüft werden, ob Datensätze diese Zeit enthalten, wenn ja, möchte ich das 1 Minute gewartet wird, und dann Eine Kette von anweisungen abgearbeitet wird.
Und dann wieder in den prüf zustand verfallen.Ich bin mir da nicht ganz sicher wie ich das machen soll, Daher hoffe ich dass ihr mir da weiterhelfen könnt.
Das mit der Zeit ist schonmal eins der Probleme, Habe da einen Timer gesehen, aber ist das was ich brauche?
Dann wie bekomme ich die aktuelle Zeit in das format das ich vorliegen habe, und ist es überhaupt möglich mit der richtigen "aktuellen" zeit das zu prüfen, da das aufrufen ja etwas dauert, nicht dass dann die zeit zu stark verschoben ist oder so.
Danke für die Antworten schonmal.
-
Hallo,
habe gerade erst deinen Thread entdeckt.
Wenn du nicht schon eine Lösung gefunden hast...Mit einem Timer kannst du bequem arbeiten (insbesondere, wenn dein Programm in der Zwischenzeit noch etwas anderes machen soll).
Um die aktuelle Systemzeit auszulesen, kannst du 'DateTime::Now()' aufrufen.
Da du ja nur im Viertelstunden-Takt überprüfen willst, solltest du einfach ein größeres Intervall beim Vergleich angeben (d.h. am besten die 15 Minuten) bzw. einfach alle älteren Datensätze (falls diese dann als abgearbeitet markiert werden).
Schau dir einfach mal die Klasse System.DateTime an.
Den Datumsvergleich solltest du also mit dieser Klasse machen (nicht als Stringvergleich!).
-
Th schrieb:
(insbesondere, wenn dein Programm in der Zwischenzeit noch etwas anderes machen soll)
Setz dem nicht solche Flausen in den Kopf! "insbesondere" - so ein Schwachsinn, Timer sind IMMER die bevorzugte Lösung, alles andere ist in .NET grober Unfug und nur einzusetzen, wenn es denn gar nicht anders geht.
-
Die zusätzliche Möglichkeit wären eben (Background-)Threads. Und da ich nicht weiß, was sein Programm sonst noch so machen soll, habe ich mich eben so ausgedrückt.
Oder hast du gemeint, ich wollte sonst auf Polling hinaus?
-
SeboStone schrieb:
Th schrieb:
(insbesondere, wenn dein Programm in der Zwischenzeit noch etwas anderes machen soll)
Setz dem nicht solche Flausen in den Kopf! "insbesondere" - so ein Schwachsinn, Timer sind IMMER die bevorzugte Lösung, alles andere ist in .NET grober Unfug und nur einzusetzen, wenn es denn gar nicht anders geht.
Dafür hätte ich gerne eine Begründung. Das steht so doch sehr als Unfung im Raum.
Wollen wir doch nicht vergessen, das der Tick des Timers im GUI Thread abläuft und somit für nebenbei aufgaben ungeeignet ist. Man muss also mindestens mal die Einschränkung auf System.Thread.Timer legen und somit auf den gesammten Bereich von System.Thread - also "dem groben Unfug im .Net"
-
Knuddlbaer schrieb:
Wollen wir doch nicht vergessen, das der Tick des Timers im GUI Thread abläuft und somit für nebenbei aufgaben ungeeignet ist. Man muss also mindestens mal die Einschränkung auf System.Thread.Timer legen und somit auf den gesammten Bereich von System.Thread - also "dem groben Unfug im .Net"
Niemand hat gesagt, dass er den Forms Timer nehmen soll, der taugt nur was, wenn auch GUI Elemente im TimerTick verwendet werden sollen.
Wer hat gesagt, dass Threading in .NET Unfug ist? Ohne Threading kommt man kaum aus.