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 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âche
Pourquoi 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