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

0voto

Brody Punkte 2076

Oh, es gibt so viele.

Ich würde mit einem Standard-Windows-Dienst in .Net beginnen und die Eigenschaften \Settings um meine geplante Zeit zu speichern (dies funktioniert wirklich nur mit einer einzigen Zeit - für mehr als eine Zeit wäre eine ausgefeiltere Konfiguration erforderlich).

Ich würde auch eine Zeichenfolge einfügen, um die Baugruppe/Klasse zu definieren, die ich in dieser Konfiguration ausführen wollte, und sicherstellen, dass die Baugruppe eine Klasse hat, die entweder von einer Basisklasse geerbt hat oder eine Schnittstelle implementiert, so dass ich sie als bekannten Typ laden und eine bekannte Methode namens Execute() ausführen kann.

Oder Sie können die Methode, die Sie aufrufen möchten, auch in der Konfigurationsdatei definieren und Reflection verwenden, um diese Methode aufzurufen.

0voto

Wouter van Nifterick Punkte 22981

Es tut mir leid, meine Antwort sagt Ihnen nicht, wie Sie das umsetzen können.

Warum sollte Ihr Kunde die Verwendung einer eingebauten Funktion des Betriebssystems verbieten, während er die Ausführung eines selbst erstellten Klons davon erlaubt?

Ich denke, es wird weniger Arbeit sein, Ihren Kunden davon zu überzeugen, dass es sich um eine unsinnige Anforderung handelt, als den Windows-Scheduler als stabilen Dienst neu zu erstellen. Abgesehen davon, dass Sie Zeit sparen, wenn Sie einfach den vorhandenen Scheduler verwenden, werden Sie wahrscheinlich eine bessere Lösung erhalten. Eine Win-Win-Situation für alle :)

-2voto

Foredecker Punkte 7337

Es ist sehr wichtig zu wissen, dass die Erstellung eines Windows-Dienstes ziemlich kompliziert ist, wenn man es richtig machen will. Dies gilt insbesondere für Produkte der Version 6 und später, da Dienste vom Desktop isoliert sind. Hier sind ein paar Kommentare

  • Dienste sind schwieriger zu debuggen als einfache Programme im Benutzermodus.
  • Auf den Betriebssystemen V6 und höher können die Dienste nicht mit dem Benutzer interagieren. Sie können ihnen also keine Konsole zur Verfügung stellen oder sie direkt in Meldungsfeldern erscheinen lassen.
  • Die Kommunikation mit einem Dienst erfolgt in der Regel über Remote Procedure Call oder out of process COM. Beides kann selbst für scheinbar konkurrierende Dinge kompliziert sein.
  • Dienste sind von entscheidender Bedeutung, daher müssen sie wesentlich zuverlässiger und effizienter sein als andere ausführbare Programme.
  • Je nach Sicherheitskontext kann es schwierig sein, einen Dienst dazu zu bringen, andere Dinge im System zu bewirken.

Anstelle eines Dienstes würde ich einen "Deamon" empfehlen. Dabei handelt es sich um ein kleines Programm mit einer versteckten Benutzeroberfläche, das wie jede andere Anwendung beim Start ausgeführt wird. Es wird im Kontext des Benutzers ausgeführt und kann alles tun, was der Benutzer tun kann (was wahrscheinlich das ist, was Sie wollen). Sie könnten ihm ein Tray-Symbol geben, wenn Sie es brauchen, oder ein Signal von einer Ihrer anderen Anwendungen verwenden, damit es seine einfache Benutzeroberfläche offenbart.

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