Стоит ли отключать Timer при длительном выполнении? - C#

Узнай цену своей работы

Формулировка задачи:

Есть служба, которая отрабатывает раз в минуту. ServiceDo.ClientExport(); - при больших количествах, функция может выполняться больше минуты. Что бы функция не дублировалась, каждую минуту - следует ли отключать таймер на время выполнения этой функции? Или можно сделать, как-то по другому?
Листинг программы
  1. private void DoSomething()
  2. {
  3. timer1 = new System.Timers.Timer();
  4. timer1.Enabled = true;
  5. timer1.Interval = 60 * 1000;
  6. timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
  7. timer1.AutoReset = true;
  8. timer1.Start();
  9. }
  10. private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
  11. {
  12. timer1.Enabled = false;
  13. //ServiceDo.ClientExport(); //выгрузка клиентов
  14. timer1.Enabled = true;
  15. }

Решение задачи: «Стоит ли отключать Timer при длительном выполнении?»

textual
Листинг программы
  1. private void DoSomething()
  2. {
  3.     timer1 = new System.Timers.Timer();
  4.     timer1.Enabled = true;
  5.     timer1.Interval = 60 * 1000;
  6.     timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
  7.     timer1.AutoReset = false; // Будем продлевать таймер самостоятельно
  8.     timer1.Start();
  9. }
  10.  
  11. private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
  12. {
  13.     try
  14.     {
  15.         //ServiceDo.ClientExport(); //выгрузка клиентов
  16.     }
  17.     finally
  18.     {
  19.         // Снова запускаем таймер
  20.         ((System.Timers.Timer)sender).Start();
  21.     }
  22. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут