Выполнение кода по расписанию - C#

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

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

Подскажите пожалуйста, как реализовать такие задержки, к примеру я хочу чтобы определенный метод вызывался спустя каждые 2 часа. Без заморозки потока через Thread.Sleep на определенное время. К примеру имеем цикл
Листинг программы
  1. while(true)
  2. {
  3. //если прошло 2 часа выполнить DoWork();
  4. }
т.е. программа должна работать по часам в 0:00, 2:00, 4:00 итд. Такое возможно? Буду рад если будет какой-то примерчик. Заранее спасибо.

Решение задачи: «Выполнение кода по расписанию»

textual
Листинг программы
  1. using System;
  2. using System.Windows.Forms;
  3.  
  4. namespace WindowsFormsApplication309
  5. {
  6.     public partial class Form1 : Form
  7.     {
  8.         public Form1()
  9.         {
  10.             InitializeComponent();
  11.  
  12.             //срабатывает каждые 30 секунд (в X минут 0 секунд, и в X минут 30 секунд) и один раз - при запуске
  13.             var task = new Task {TimeToRun = new DateTime(2015, 1, 1, 0, 0, 0), Interval = new TimeSpan(0, 0, 30)};
  14.             task.Action = delegate { MessageBox.Show("Task is running"); };
  15.  
  16.             //
  17.             var timer = new Timer() {Interval = 1000, Enabled = true};
  18.             timer.Tick += delegate { task.CheckAndRun(); };
  19.         }
  20.     }
  21.  
  22.     public class Task
  23.     {
  24.         public TimeSpan Interval { get; set; }
  25.         public DateTime TimeToRun { get; set; }
  26.         public Action Action { get; set; }
  27.  
  28.         public void CheckAndRun()
  29.         {
  30.             var now = DateTime.Now;
  31.             if(TimeToRun < now)
  32.             {
  33.                 while(TimeToRun < now)
  34.                     TimeToRun += Interval;
  35.                 if(Action != null)
  36.                     try
  37.                     {
  38.                         Action();
  39.                     }
  40.                     catch {/*TODO*/}
  41.             }
  42.         }
  43.     }
  44. }

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


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

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

7   голосов , оценка 4.571 из 5

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

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

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