2013-06-24 10 views
8

Ich habe einen Timer mit Intervall 3600000, die in einer Stunde übersetzt werden kann, so dass, wenn ichTimer ausführen, wenn direkt nach dem Start?

timer.Start() 

tun es wird in jeder Stunde nachfolgenden Code ausführen ab dem nächsten Stunde beginnen

private void timer_Tick(object sender, EventArgs e) 
{ 
    ..... 
} 

aber was, wenn ich möchte, dass es auch die zweite ausgeführt wird, rufe ich timer.Start() und dann jede Stunde nach?

Antwort

10

Die einfachste Möglichkeit wäre, nur die Methode aufrufen:

timer.Start(); 
timer_Tick(null, EventArgs.Empty); // Simulate a timer tick event 

Dies ist eigentlich nicht den Timer auslösen, sondern ruft der Handler sofort, effektiv ein „jetzt“ Ereignis zu simulieren.

0

Einfach würde ich direkt nach dem Aufruf von Start() tun, die Funktion manuell aufrufen.

+0

Was ist der Sinn des Schlafens für eine Sekunde? – Servy

+0

Korrigiert. Lesen Sie die Frage falsch. – iefpw

1

Wie ich verstehe System.Threading.Timer tut genau das, was Sie wollen.

Sie können angeben, wann der erste Aufruf stattfinden muss und dann das Intervall zwischen den Aufrufen.

Wenn Sie also den ersten Aufruf auf 0 Millisekunden und das Intervall auf eine Stunde setzen, wird er sofort und dann jede Stunde ausgelöst.

dueTime Typ: System.Int32 Die Höhe der Zeit zu verzögern, bevor Rückruf aufgerufen wird, in Millisekunden. Geben Sie Timeout.Infinite an, um zu verhindern, dass der Timer gestartet wird. Geben Sie Null (0) an, um den Timer sofort zu starten.

Periode Typ: System.Int32 Das Zeitintervall zwischen den Aufrufen von Rückruf in Millisekunden. Geben Sie Timeout.Infinite an, um die periodische Signalisierung zu deaktivieren.

Verwandte Themen