2 Stimmen

Benutzerdefinierter Windows-Ereignisplanungsdienst

Ich muss einen Windows-Dienst erstellen, der genau wie der Aufgabenplaner funktioniert, indem ich konfigurieren kann, zu welcher Zeit er ausgeführt wird, und er ruft im Grunde nur eine .NET-Klasse zu dieser geplanten Zeit auf (wiederkehrend). Was ist die empfohlene Vorgehensweise? Außerdem wäre ich für jede Information über die Installation/Entfernung dieses Dienstes dankbar!

Update: Die Verwendung des Aufgabenplaners ist keine Option (Kundenanforderung, hat etwas mit ihren IT-Standards zu tun). Das war auch mein Vorschlag an sie, aber es wird nicht funktionieren.

Lösung: Vielen Dank an alle für Ihre Antworten, die Quartz.Net-Lösung sieht besonders gut aus, aber ich fand die folgende, die genau das hat, was ich brauche:

http://www.c-sharpcorner.com/UploadFile/ajifocus/AppScheduler05262006074807AM/AppScheduler.aspx?ArticleID=b52f76da-943f-4807-9675-869f135ef2cd

9voto

PeeVeeGee Punkte 151

Sie könnten die Quartz.Net-Scheduler in einem Dienst.

1 Stimmen

+1 für Quartz.NET innerhalb eines Windows-Dienstes. Ich habe es gerade mit einem benutzerdefinierten Konfigurationsabschnitt implementiert, um jeden der Jobs zu definieren, die ich ausführen möchte, und die "Cron"-Syntax verwendet, um die Häufigkeit jedes von ihnen zu bestimmen. Es funktioniert wirklich gut.

2voto

Kev Punkte 115293

Wenn Sie Zugriff auf die Box haben, warum nicht einfach den Windows-Taskplaner verwenden und die Funktionalität von einer Konsolen-Exe aufrufen. Das ist viel einfacher, als das Rad neu zu erfinden.

0 Stimmen

Ich bin einverstanden. Warum nicht einfach eine Wrapper-Exe erstellen, die Ihre Klasse aufruft, wenn sie ausgeführt wird, und den Scheduler verwenden?

1voto

faulty Punkte 7807

Ich hatte das gleiche Problem schon einmal, der Aufgabenplaner hat ein kleines Problem mit sich selbst. Er kann niemals ein zuverlässiger Ersatz für Linux's cron sein. Einmal musste ich einen Dienst schreiben, der genau das tut. Ich hatte einen System.Threading.Timer in einer 1-Sekunden-Schleife laufen. Dann prüft es auf Ereignisse, die abgefeuert werden müssen (externe Exe), entsprechend der Konfiguration, die ich in einer Xml-Datei gespeichert habe.

0 Stimmen

Der Windows-Aufgabenplan ist ein Dienst. Wie problematisch ist er für Sie? Er bewältigt auch einige komplexe Probleme, wie z. B. die korrekte Ausführung von Mittagessen für nicht übergeordnete Prozesse und die Verwendung von Anmeldeinformationen. Wie zuversichtlich sind Sie, dass eine selbst entwickelte Lösung oder etwas von CodePlex so sicher oder zuverlässig wäre wie der Windows Task-Dienst?

1voto

Joseph Guadagno Punkte 371

Sie könnten den .NET Task Scheduler ausprobieren http://TaskService.Codeplex.com . Dieses Projekt bietet die Möglichkeit, .NET-Assemblies so zu planen, dass sie zu jeder Zeit des Tages mit verschiedenen Arten von Wiederholungen wie täglich, stündlich, wöchentlich, alle 5 Stunden oder jeden dritten Tag ausgeführt werden.

0 Stimmen

Warum nicht den eingebauten Windows Taskplaner verwenden? Es scheint ineffizient zu sein, einen weiteren Dienst hinzuzufügen, der dasselbe tut wie eine eingebaute Windows-Funktion. Leistet der TaskService auf CodePlex etwas wesentlich anderes oder besseres als der Windows Task Scheduler?

1voto

Tim Punkte 11

Wenn Sie ein Zeitplanungssystem erstellen wollen, sollten Sie besser einen Windows-Dienst schreiben. Sie sind zwar schwer zu debuggen, aber wenn Sie die gesamte Funktionalität aus dem Dienst in Helfer- und Service-Agent-Klassen verlagern, können Sie die Funktionalität leicht testen, ohne sich um den Dienst kümmern zu müssen.

Sie können dann alle Informationen, die Sie einem Frontend zur Verfügung stellen müssen, über WCF-Dienste bereitstellen. Sie können jetzt in jeder beliebigen ausführbaren Datei gehostet werden, so dass ein Windows-Dienst problemlos funktioniert. Der Vorteil der Windows-Dienst-Taktik ist, dass Sie keinen Desktop benötigen. Geplante Aufgaben sind dazu gedacht (oder sollten es sein), im Hintergrund zu laufen. Windows-Dienste sind ein guter Ansatz für Hintergrundaufgaben.

Ich habe mir Zeitplanungssysteme von Drittanbietern, Open Source Scheduler und quartz.net angesehen. Wir haben uns für Letzteres entschieden. Wenn Ihr Budget es zulässt, sollten Sie sich Terminplanungssysteme wie JAMS oder andere ansehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X