Méthode d'exécution toutes les heures sur l'heure
Je veux exécuter une méthode toutes les heures sur l'heure. J'ai écrit un code,mais il n'est pas assez pour mon but. Code ci-dessous fonctionne, toutes les 60 minutes.
public void Start()
{
System.Threading.Timer timerTemaUserBilgileri = new System.Threading.Timer(new System.Threading.TimerCallback(RunTakip), null, tmrTemaUserBilgileri, 0);
}
public void RunTakip(object temauserID)
{
try
{
string objID = "6143566557387";
EssentialMethod(objID);
TimeSpan span = DateTime.Now.Subtract(lastRunTime);
if (span.Minutes > 60)
{
tmrTemaUserBilgileri = 1 * 1000;
timerTemaUserBilgileri.Change(tmrTemaUserBilgileri, 0);
}
else
{
tmrTemaUserBilgileri = (60 - span.Minutes) * 60 * 1000;
timerTemaUserBilgileri.Change(tmrTemaUserBilgileri, 0);
}
watch.Stop();
var elapsedMs = watch.ElapsedMilliseconds;
}
catch (Exception ex)
{
timerTemaUserBilgileri.Change(30 * 60 * 1000, 0);
Utils.LogYaz(ex.Message.ToString());
}
}
public void EssentialMethod(objec obj)
{
//some code
lastRunTime = DateTime.Now;
//send lastruntime to sql
}
Utilisation
Pourquoi ne prenez-vous pas la minuterie de l'équation, et il suffit d'utiliser le Planificateur de Tâches Windows à la place?
DateTime
à la place? Vous ne pouvez pas attendre que votre minuterie tique exactement sur l'heure toutes les heures - juste une minuterie qui vérifie le courant DateTime
à la place. Gardez à l'heure actuelle dans une variable, lorsque la minuterie tiques, vérifier pour voir si l'heure a changé - si donc mettre à jour l'heure actuelle variable et effectuer votre tâchePourquoi ne prenez-vous pas la minuterie de l'équation, et il suffit d'utiliser le Planificateur de Tâches Windows à la place?
OriginalL'auteur RockOnGom | 2013-10-10
Vous devez vous connecter pour publier un commentaire.
Si vous voulez que votre code à exécuter toutes les 60 minutes:
si vous voulez que votre code soit exécuté toutes les heures (c'est à dire 1:00, 2:00, 3:00) vous pouvez créer un timer avec quelques petites intervalle (disons une seconde, dépend de la précision dont vous avez besoin) et à l'intérieur de la minuterie de l'événement vérifier si une heure a passé
J'ai essayé d'utiliser ce code à l'intérieur de ma méthode Application_Start et ça ne fonctionne pas. Toute aide serait grandement appréciée
ensemble aTimer.Enabled=true; elle fonctionnera
OriginalL'auteur Anarion
Juste un petit commentaire basé sur /Anarion est une solution que je ne pouvais pas entrer dans un commentaire.
Vous n'en avez pas besoin pour aller avec toute la précision à toutes, vous êtes en train de penser "comment puis-je vérifier cette heure est l'heure que je veux du feu". Vous pouvez également penser à "Comment puis-je vérifier l'heure suivante est l'heure que je veux incendie" - une fois que vous pensez que vous réalisez que vous n'avez pas besoin de précision à tous, il vous suffit de cocher une fois par heure, et de définir un thread pour les prochaines heures. Si vous cochez la case une fois par heure, vous savez que vous serez à un certain point avant la prochaine heure.
OriginalL'auteur Paul Hutchinson
Je suis d'accord avec Señor de Sel que la chron travail devrait être le premier choix. Cependant, l'OP a demandé pour toutes les heures à partir de c#. Pour ce faire, j'ai mis en place le premier événement chronométré à feu sur l'heure:
Le problème maintenant est que si la minuterie.L'intervalle qui se passe à 45 minutes et 32 secondes, puis la minuterie va poursuivre la cuisson 45:32 non seulement la première fois. Donc, à l'intérieur de la timer_Tick méthode, vous devez régler de nouveau l'horloge.Intervalle d'une heure.
OriginalL'auteur EscapeArtist
Utiliser une Tâche Cron sur le serveur pour appeler une fonction à l'intervalle spécifié,
Heres un lien
http://www.thesitewizard.com/general/set-cron-job.shtml
OriginalL'auteur John Richard Salt
Comment parler de quelque chose de plus simple? L'utilisation d'une minute minuterie pour vérifier l'heure:
OriginalL'auteur user3235770
Qu'en essayant le code ci-dessous, la boucle est déterminé à sauver vos ressources, et qu'il est exécuté à chaque heure EXACTE, c'est à dire avec les deux minutes et secondes (et presque millisecondes égal à zéro:
OriginalL'auteur Hasan A Yousef
Pourquoi tout le monde essaie de gérer ce problème avec une minuterie?
vous êtes en train de faire deux choses... en attente jusqu'à la fin de l'heure, puis l'exécution de votre minuterie toutes les heures sur l'heure.
J'ai un windows service où j'avais besoin de cette même solution. J'ai fait mon code dans une très verbeux, de sorte qu'il est facile à suivre pour tout le monde. Je sais qu'il y a de nombreux raccourcis qui peuvent être mis en œuvre, mais je vous laisse.
OriginalL'auteur Evander