Стоит ли отключать Timer при длительном выполнении? - C#
Формулировка задачи:
Есть служба, которая отрабатывает раз в минуту.
ServiceDo.ClientExport(); - при больших количествах, функция может выполняться больше минуты.
Что бы функция не дублировалась, каждую минуту - следует ли отключать таймер на время выполнения этой функции?
Или можно сделать, как-то по другому?
private void DoSomething()
{
timer1 = new System.Timers.Timer();
timer1.Enabled = true;
timer1.Interval = 60 * 1000;
timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
timer1.AutoReset = true;
timer1.Start();
}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
timer1.Enabled = false;
//ServiceDo.ClientExport(); //выгрузка клиентов
timer1.Enabled = true;
}Решение задачи: «Стоит ли отключать Timer при длительном выполнении?»
textual
Листинг программы
private void DoSomething()
{
timer1 = new System.Timers.Timer();
timer1.Enabled = true;
timer1.Interval = 60 * 1000;
timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
timer1.AutoReset = false; // Будем продлевать таймер самостоятельно
timer1.Start();
}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
//ServiceDo.ClientExport(); //выгрузка клиентов
}
finally
{
// Снова запускаем таймер
((System.Timers.Timer)sender).Start();
}
}