2011-01-05 14 views
3

Ich muss ein Tool schreiben, das eine wiederkehrende Aufgabe in einem vom Benutzer konfigurierbaren Zeitplan ausführt. Ich schreibe es in C# 3.5 und es läuft auf XP, Windows 7 oder Windows Server 2008. Die Aufgaben dauern ungefähr 20 Minuten. Die Benutzer werden wahrscheinlich mehrere Konfigurationen einrichten wollen, z. B. tägliche, wöchentliche und monatliche Zyklen. Verwenden von Taskplaner ist keine Option.Hilfe beim Schreiben eines wiederkehrenden Task-Schedulers

Der Benutzer wird Wiederholungen über eine Benutzeroberfläche planen, die dem Outlook-Terminordialog entspricht. Sobald sie den Zeitplan erstellt haben, werden sie gestartet und es sollte in der Taskleiste sitzen und seine Aufgaben zu den festgelegten Zeiten starten und dann eine Mail senden, um anzuzeigen, dass es beendet ist.

Was ist der beste Weg, dies zu schreiben, so dass es keine Ressourcen verschlingt, den Host einsperrt oder sich anderweitig schlecht benimmt?

Antwort

4

Das Beste, was Sie tun können, ist, das Rad nicht neu zu erfinden, indem Sie das nutzen, was das Betriebssystem bietet. Siehe den Artikel Calling the Task Scheduler in Windows Vista (and Windows Server 2008) from managed code von Bart De Smet für eine sehr praktische Verwendung des Windows Task Schedulers von C#.

Wenn Sie aus irgendeinem Grund Ihren eigenen Dienst implementieren müssen (z. B. größere Kontrolle über Abhängigkeiten), würde ich mir einige der Open-Source-Cron-Implementierungen in .NET-kompatiblen Sprachen ansehen. Es gibt einen Artikel mit Code zum Code-Projekt namens Implementing a small Cron service in C#, der dies zu tun scheint. Basierend auf seinem Artikel An Event Based Cron (Scheduled) Job In C# sieht es so aus, als hätte Bob Cravens in diesem Bereich etwas gründlichere Arbeit geleistet oder zumindest seine Arbeit genauer dokumentiert. Ich bin mir sicher, dass es andere gibt, wenn man sich umschaut, und etwas, das auf Cron basiert, ist ein guter Ausgangspunkt.

+0

Ausgezeichnet! Genau das, was ich gesucht habe – Sisiutl

1

Ich schlage vor, einen Windows-Dienst zu schreiben, die eine SQlite db verwendet die Zeitpläne zu erhalten und eine GUI hinzufügen, zu schreiben, was Sie an die DB müssen aber nicht vergessen

System.Timers.Timer 

und nicht die

zu verwenden
System.Windows.Forms.Timer 

In Ihrem Windows-Dienst

Verwandte Themen