2013-06-24 26 views
8

Mam timer z interwałem 3600000, który można przełożyć na godzinę, więc kiedy robięwykonać timer po uruchomieniu?

timer.Start() 

będzie to wykonać poniżej kod w każdej godzinie, począwszy od następnej godziny

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

ale co jeśli chcę, aby był on również wykonywany w drugim wywołaniu timer.Start(), a następnie co godzinę później?

Odpowiedz

10

Najprostszym rozwiązaniem byłoby po prostu wywołać metodę:

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

nie faktycznie wywołać timer, ale natychmiast wzywa swoją obsługi, skutecznie symulując „teraz” zdarzenie.

0

Po prostu zrobiłbym zaraz po wywołaniu Start(), wywołaj funkcję ręcznie.

+0

Jaki jest sens snu przez sekundę? – Servy

+0

Naprawiono. Przeczytaj pytanie niepoprawnie. – iefpw

1

Jak rozumiem, System.Threading.Timer robi dokładnie to, co chcesz.

Pozwala określić, kiedy musi nastąpić pierwsze wywołanie, a następnie interwał między wywołaniami.

Tak więc, jeśli pierwsze wywołanie zostanie ustawione na 0 milisekund, a interwał na godzinę, to będzie ono uruchamiane natychmiast, a następnie co godzinę.

dueTime Typ: System.Int32 czas opóźnić przed zwrotna wywoływana jest w milisekundach. Określ Timeout.Infinite, aby zapobiec uruchomieniu timera . Określ zero (0), aby natychmiast uruchomić zegar.

okres Typ: System.Int32 Odstęp czasowy między wywołaniami wywołania zwrotnego w milisekundach. Określ limit czasu, aby wyłączyć okresową sygnalizację .

Powiązane problemy