Calculer Cron Temps d'Exécution Suivant en C#
J'ai crontab-comme planificateur. Temps définition de "MM HH WD rapport de M":
MM - minutes
HH heures
WD - les jours de la semaine
MD - jours du mois
M - mois
WD, MD et M permettent à des entrées multiples et chacun des paramètres peut être null, par exemple:
^ ^ 0, 1 ^ ^ means exucution every minute, every hour, at sunday and mondey, every day<br>
35 15 ^ ^ ^ execution every day at 15.35<br>
Le problème est de savoir comment calculer le temps d'exécution suivant, si vous savez que le dernier jour de leur exécution. Je sais comment le faire à l'aide de la boucle (juste ajouter 1 minute jusqu'à ce qu'il convient de l'état), mais il doit y avoir une meilleure façon.
Avez-vous besoin d'un DateTime?
J'espère que vous n'êtes pas sous-estimer le travail. Si vous voulez vraiment être (POSIX) cron compatible vous aurez pour répondre à un beaucoup plus que ce que (je sais, j'ai mis en œuvre qu'une fois en C++)
Je suppose qu'il a besoin de <strike>Noda Temps</strike> modifier beaucoup de temps.... 🙂
Si c'est
J'espère que vous n'êtes pas sous-estimer le travail. Si vous voulez vraiment être (POSIX) cron compatible vous aurez pour répondre à un beaucoup plus que ce que (je sais, j'ai mis en œuvre qu'une fois en C++)
Je suppose qu'il a besoin de <strike>Noda Temps</strike> modifier beaucoup de temps.... 🙂
Si c'est
MM HH
d'abord, puis de ne pas 15 35
lever une exception?if you know last execution date
- gre... la dernière exécution n'a rien à voir avec crontab spécifications (ils sont de temps absolu références)OriginalL'auteur user1016945 | 2011-11-14
Vous devez vous connecter pour publier un commentaire.
J'ai utilisé avec succès NCrontab pour exactement cet effet.
en utilisant quelque chose comme
Assez sûr qu'il sera de retour la prochaine occurrence, mais GetNextOccurrences(startTime, endTime) retourne IEnumerable<DateTime> de toutes les occurences de cette gamme. 🙂
il semble avoir été déplacé de google code pour github, mais pas les liens sont fournis: github.com/atifaziz/NCrontab
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.
.Net Framework 4.5 projet. Quel est le problème?OriginalL'auteur devrooms
Vous pouvez soit le code que vous utilisez DateTime et TimeSpan - par exemple:
vérifie si il est 15:35 actuellement (et donc certains l'exécution doit avoir lieu), des vérifications similaires peuvent être mises en œuvre pour le jour de la semaine, jour du mois, etc.
ou utiliser un vraiment agréable opensource .NET-library appelé NodaTime (est certainement une meilleure façon).
Une autre option est d'utiliser une architecture différente - pour le planificateur de type applications/services il y a un opensource .NET-library appelé Quartz (c'est encore mieux) qui ne parmi ces calculs beaucoup d'autres choses utiles dans ce contexte.
vous devez avoir overread que je n'ai pas ajouter à Maintenant, MAIS en fait le plus de DateTime.Maintenant.Date qui est minuit donc le plus!
Oops 🙂 Très bonne idée!
OriginalL'auteur Yahia
Cronos est une autre excellente option pour ce problème.
OriginalL'auteur Tim