Ausgeführte Methode jede Stunde auf der Stunde

Möchte ich ausführen einer Methode, die jede Stunde auf der Stunde. Ich schrieb einige code,aber es ist nicht genug für mein Ziel. Code unten ist arbeiten alle 60 Minuten.

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 
}
  • Verwenden DateTime statt? Sie können nicht erwarten, dass Ihre timer tick genau auf die Stunde, jede Stunde - nur einen timer, der überprüft den aktuellen DateTime statt. Halten Sie die aktuelle Uhrzeit in eine variable, wenn der timer "tickt", um zu sehen, wenn die Stunde verändert hat - wenn ja, update die aktuelle Stunde-variable und führen Sie Ihre Aufgabe
  • Warum nimmst du nicht den timer aus der Gleichung heraus und nur mit der Windows-Aufgabenplanung statt?
InformationsquelleAutor RockOnGom | 2013-10-10
Schreibe einen Kommentar