Berechnen Cron Nächsten Lauf Mal in C#
Habe ich crontab-wie scheduler. Zeit definition "MM HH WD MD M":
MM - Minuten
HH - Stunden
WD - Tage-Woche
MD - Tage der Monat
M - Monate
WD, MD und M ermöglicht mehrere Einträge und jeder Parameter kann auf null gesetzt werden, zum Beispiel:
^ ^ 0, 1 ^ ^ means exucution every minute, every hour, at sunday and mondey, every day<br>
35 15 ^ ^ ^ execution every day at 15.35<br>
Das problem ist, wie zu berechnen, nächste Laufzeit, wenn Sie wissen, Letzte Ausführung-Datum. Ich weiß, wie dies zu tun mit Schleife (fügen Sie einfach 1 minute, bis es passt der Bedingung), aber es muss doch bessere Möglichkeiten geben.
- Sie benötigen einen DateTime?
- Ich hoffe Sie sind nicht zu unterschätzen die Aufgabe. Wenn Sie wirklich wollen, um (POSIX) cron-kompatibel werden Sie haben zu bieten für viel mehr als das. (ich weiß, ich habe realisiert, dass einmal in C++)
- Ich denke, er braucht <strike>Noda Time</strike> Bearbeiten viel Zeit.... 🙂
- Wenn es
MM HH
erste, dann wäre das nicht15 35
eine exception werfen? if you know last execution date
- erm... die Letzte Hinrichtung hat nichts zu tun mit crontab-specs (Sie sind absolute Zeit, Verweise)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich erfolgreich verwendet NCrontab für genau diesen Zweck.
etwas wie
Could not load file or assembly 'NCrontab, Version=3.2.20120.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required.
im .Net Framework 4.5-Projekt. Was kann falsch sein?Können Sie entweder den code, der sich mit DateTime und TimeSpan - zum Beispiel:
prüft, ob es ist 15:35 aktuell (und so manche Ausführung stattfinden muss), ähnliche Prüfungen können implementiert werden für den Tag der Woche, Tag des Monats, etc.
oder verwenden Sie eine wirklich schöne opensource .NET-Bibliothek genannt NodaTime (ist definitiv der bessere Weg).
Weitere option ist die Verwendung einer anderen Architektur für einen solchen scheduler-Typ apps/Dienste es gibt ein opensource .NET-Bibliothek namens Quarz (ist sogar besser), die nicht unter diese Berechnungen viele andere sehr nützliche Dinge in diesem Zusammenhang.
Cronos ist eine weitere hervorragende option für dieses problem.