Also hier ist mein Problem, ich muss einen c # Dienst auf einem Server ausführen, der eine Datei auf ftp einmal pro Tag um 3 Uhr morgens bekommt. Ich denke, dass ich es mit einem thread.sleep () machen kann oder vergleiche DateTime.Now mit 3am ....
Haben Sie eine bessere Lösung?
Vielen Dank für Ihre Hilfe!
Bessere Lösung, lassen Sie es von Windows mit geplanten Aufgaben erledigen.
Wenn es nur einmal am Tag ausgeführt werden muss, würde ich mich dafür entscheiden. Sogar Google macht es;)
BEARBEITEN:
Um den Kommentar zu beantworten, ist es wie Fredrik gesagt hat. Es ist eine erweiterte Option, die Sie öffnen können, wenn die Aufgabe eingerichtet wird. Sie enthält eine Checkbox mit dem Namen: " Run only if logged on
", die zunächst falsch ist.
Schreiben Sie eine Konsolen-App oder Ähnliches, und verwenden Sie den Windows-Planer (oder wie auch immer er heutzutage heißt ...), um ihn täglich auszuführen.
Für eine flexible Lösung können Sie dies verwenden. Es ist kein Windows-Dienst, aber Sie könnten es leicht in einen integrieren. Oder Sie überlegen sich Quartz.NET , das angeblich eine industrielle Stärke ist (die Java-Version ist es sicherlich).
Ich habe geplante Aufgaben erfolgreich für Sicherungen verwendet, aber ich habe ein paar Worte zur Vorsicht ...
Geplante Aufgaben werden nicht ausgeführt, wenn Sie sich abmelden. Ich bin mir nicht sicher, ob dies überschrieben werden kann, aber ich wurde von nicht ausgeführten Aufgaben überrascht, weil Windows automatisch aktualisiert, neu gestartet und auf mich wartet, bis ich mich anmelde.
Ich habe automatische Updates deaktiviert - Windows sollte zuerst fragen.
Eine weitere Überlegung ist, dass 3:00 Uhr eine Zeit ist, in der viele Benutzer normalerweise ausgeloggt würden.
Andere Antworten sind gut. Ich dachte nur, ich würde darauf hinweisen.
vergleiche DateTime.Now mit 3am
ist eine schlechte Lösung, selbst wenn Sie zwischen den einzelnen Prüfungen einige Zeit schlafen, da Systemressourcen unnötig verschwendet werden (nicht nur beim wiederholten Überprüfen der Zeit, sondern auch bei der Speichernutzung des Programms).
Warum sollte dies nicht so eingestellt werden, dass es als geplante Aufgabe ausgeführt wird? Lassen Sie es ausführen und dann beenden. Richten Sie Windows so ein, dass der Prozess täglich um 3:00 Uhr als geplante Aufgabe gestartet wird.
Tags und Links c# multithreading service scheduling