2016-09-21 6 views
0

Ich entwickle eine MVC-Anwendung und es hat eine Methode, die am Ende des Tages laufen sollte. Ich habe nicht den Zugriff auf Windows-Task-Scheduler und die Implementierung von Windows-Dienst ist nicht möglich. (Da das bereitgestellte Paket verschiedene Kunden haben sollte und sie ihre eigenen Server haben. In diesem Fall werden wir keinen Windows-Dienst bereitstellen oder Aufgabenplaner verwenden)Run-Methode zu einem bestimmten Zeitpunkt MVC-Anwendung

Bitte sagen Sie mir, gibt es irgendeine Methode, um eine Methode zu einem bestimmten Zeitpunkt auszuführen . Ich sah, es gibt Methoden, die Timer verwenden. Aber das Problem ist, dass dieser Job nur einmal am Tag ausgeführt werden sollte und der Prozess dauert nicht länger als 1 Minute.

Wenn wir den Timer verwenden, werden die Ressourcen dem Timer-Dienst zugewiesen und es ist keine gute Methode, wie ich denke, weil diese Methode nur einmal am Tag ausgeführt wird. (Prozess ist in anderen 23 Stunden und 59 Minuten laufen und es ist Verschwendung von Ressourcen. Ich denke, Timer Konzept in Ordnung ist, wenn Prozess wird in jedem 5,10 Minuten laufen)

Bitte geben Sie mir Richtung ....

+0

Werfen Sie einen Blick auf Quarz Job Scheduler. –

+0

"* und Windows-Implementierung ist nicht möglich *", warum ist das nicht möglich? Wenn das Projekt für Ihre Kunden bereitgestellt wird, kann es den Windows-Dienst als Teil des Bereitstellungsprozesses installieren ... Wenn Sie die Methode einmal täglich auf dem Rechner * des Kunden ausführen möchten, müssen Sie auf jeden Fall eine lang andauernde App verwenden. – Fabjan

+0

Take Ein Blick auf HangFire, der für den von Ihnen beschriebenen Zweck entworfen wurde und einen Job/eine Methode zu einem bestimmten Zeitpunkt auslösen kann: http://hangfire.io/ – LDJ

Antwort

0

ich nehme an, dass Sie bereits eine Datenbank haben. Erstellen Sie eine Tabelle mit einem einzelnen Datetime-Feld namens LastRun. Speichern Sie in diesem Feld das letzte Datum und die Uhrzeit, zu der Ihre Methode ausgeführt wurde.

In Ihrer MVC-Anwendung beim Start der Sitzung oder beim Start der Anwendung vergleichen Sie LastRun Datum mit dem aktuellen Datum und entscheiden Sie, ob Sie die oben genannte Methode ausführen wollen. Nachdem die Methode ausgeführt wurde, aktualisieren Sie den LastRun-Wert.

+0

einfach überprüfe ich mit unten Code in application_start(), weil dies Tag-End-Prozess ist und sollte um Punkt Mitternacht ausgeführt werden. \t DateTime dt = Convert.ToDateTime ("2016/09/22"); if (DateTime.Today == dt) { int x = 5; } Ich änderte meine lokale Maschinenzeit bis 2016/09/21 23:59 Uhr und warte, bis der Bolow-Code ausgelöst wird (fügen Sie einen Breakpoint innerhalb "if" -Block) aber es doent Trigger. – weeraa

+0

Der Nachteil der oben vorgeschlagenen Methode ist, dass Sie ein neues Anwendungs- oder Sitzungsstart-Ereignis benötigen, um es auszulösen. – Trifon

Verwandte Themen