Entwickler-Ecke

Basistechnologien - C# bestimmte Funktion zu bestimmter Uhrzeit ausführen.


MilchKaffee - Do 04.09.08 13:08
Titel: C# bestimmte Funktion zu bestimmter Uhrzeit ausführen.
Hi Forum!

Wie führt man eine bestimmte Funktion täglich zu einer bestimmten Uhrzeit aus?

Kurze Beschreibung: Das Programm läuft immer im Tray und soll z.B. morgens um 3 Uhr eine einfache Datenbankabfrage initiieren. Danach wird automatisch eine eMail versendet.

Benötigt man dazu einen Timer? Oder evtl. einen Thread, der permanent die Systemzeit abfragt und bei einer voreingestellten Uhrzeit die Funktion auslöst?

Kennt jemand eine gute Quelle / ein Tutorial, wo dieses Thema beschrieben wird bzw. hat jemand eine Idee für den groben Aufbau?

Vielen Dank vorab!


Th69 - Do 04.09.08 13:35

Hierfür ist ein Timer genau das Richtige. Da du ja nicht auf ein paar Sekunden genau den Vorgang starten mußt, reicht es einfach im Timer jede Minute (60000 ms) die aktuelle Uhrzeit mit der gewünschten abzufragen, und bei 'größer gleich (>=)' dann deine Aktion starten. Das Programm muß sich dann aber noch merken, daß es die Aktion schon für den aktuellen Tag ausgeführt hat, damit es nicht den ganzen Tag sendet.
Wenn du alternativ nur auf exakte Gleichheit abfragen willst, dann vergleiche aber auch wirklich nur Stunden und Minuten.

Einen Thread brauchst du nur, wenn du mehrere Sachen gleichzeitig machen willst, also z.B. noch eine GUI anzeigen, während die DB-Abfrage erfolgt...

P.S: Noch eine Alternative: du könntest dein Programm mittels der Systemsteurung/Geplante Tasks ausführen lassen (sofern es nicht noch andere Dinge machen soll).


JüTho - Do 04.09.08 14:11

Weitere (überwiegend gleiche) Antworten gibt es auch hier [http://www.mycsharp.de/wbb2/thread.php?threadid=60500] und hier [http://entwickler-forum.de/showthread.php?t=50717]. Hier in Punkt 2 [http://www.mycsharp.de/wbb2/thread.php?threadid=26594] wird auch erläutert, warum solche Mehrfach-Posts als unhöflich angesehen werden. Jürgen


MilchKaffee - Do 04.09.08 14:13

Vielen Dank Th69