Windows-Dienst zum ausführen einer Funktion zur angegebenen Zeit
Wollte ich einen Windows-Dienst starten, um eine Funktion auszuführen Alltag zu einer bestimmten Zeit.
Welche Methode sollte ich berücksichtigen, um dies zu implementieren? Timer oder die Verwendung von threads?
InformationsquelleAutor der Frage Ziyad Ahmad | 2013-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
(1) Auf den ersten start, Set _timer.Intervall auf der Menge der Millisekunden, die zwischen dem service-start-und Zeitplan der Zeit. Dieses Probe-set Zeit planen, um 7:00 Uhr als _scheduleTime = DateTime.Heute.AddDays(1).AddHours(7);
(2) Auf Timer_Elapsed, reset _timer.Intervall von 24 Stunden (in Millisekunden), wenn der aktuelle Intervall ist nicht 24 Stunden.
Edit:
Manchmal wollen die Leute planen, den Dienst zu starten, am Tag 0nicht morgen, so dass Sie ändern
DateTime.Today.AddDays(0)
.Wenn Sie es tun, und legen Sie einen Zeitpunkt in der Vergangenheit es verursacht einen Fehler setzen des Intervalls, das mit einer negativen Zahl.InformationsquelleAutor der Antwort Settapon H
Gute Antwort (ich habe Ihren code benutzt), aber ein problem mit dieser Zeile:
Wenn DateTime.jetzt ist später, als scheduleTime, Sie gehen negativ, und dies wird eine Ausnahme generiert, wenn die Zuordnung zu timer.Intervall.
Verwendet habe ich:
Dann die Subtraktion.
InformationsquelleAutor der Antwort Evan
Verwendung der in Windows integrierten Taskplaner (http://windows.microsoft.com/en-us/windows7/schedule-a-task) oder Quartz.net.
... Es sei denn, Sie haben ein service, das tun viele andere Verarbeitung, und muss die ganze Zeit laufen, in dem Fall ein Timer angebracht sein könnte.
InformationsquelleAutor der Antwort Ian Mercer
Sind Sie sicher, dass Sie einen Dienst benötigen, das läuft nur einmal pro Tag?
Vielleicht die Windows-Aufgabenplanung wird die bessere Lösung?
InformationsquelleAutor der Antwort Jakub Szułakiewicz
InformationsquelleAutor der Antwort Binish Babu
Können Sie es mit einem thread und ein Ereignis; ein-timer ist nicht erforderlich.
InformationsquelleAutor der Antwort drowa