выполнить таймер, когда сразу после запуска?

у меня есть таймер с интервалом 3600000, который можно перевести в час, поэтому, когда я делаю

timer.Start()

он будет выполнять код ниже в каждый час, начиная со следующего часа

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

но что, если я хочу, чтобы он также выполнялся во второй раз, когда я вызываю таймер.Start (), а затем каждый час после?

3 ответов


самым простым вариантом было бы просто вызвать метод:

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

это фактически не вызывает таймер, но немедленно вызывает обработчик, эффективно имитируя событие "сейчас".


Как я понимаю System.Threading.Timer делает именно то, что вы хотите.

Он позволяет указать, когда должен произойти первый вызов, а затем интервал между вызовами.

поэтому, если вы установите первый вызов в 0 миллисекунд, а интервал в час, он будет срабатывать немедленно, а затем каждый час.

dueTime Тип: Система.Int32 время задержки до обратного вызова вызывается, в миллисекундах. Укажите Время Ожидания.Бесконечные предупреждения этот таймер запуска. Укажите ноль (0) для немедленного запуска таймера.

тип периода: система.Int32 временной интервал между вызовами обратный звонок, в миллисекундах. Укажите Время Ожидания.Бесконечное отключение периодическая сигнализация.


просто я бы сделал сразу после вызова Start (), вызовите функцию вручную.