WPF.NET Лучший способ запуска события каждую минуту

У меня есть приложение, которое нужно проверять таблицу базы данных каждую минуту. Таблица индексируется по времени суток, и поэтому приложение должно запускать эту проверку каждую минуту.

Что лучше всего сделать это? Я могу создать фоновый рабочий поток, но если я заставлю его спать в течение 60 секунд после каждой проверки, я, в конце концов, пропущу минуту из-за накладных расходов, вызвавших проверку.

Помню ли я минуту, которую я проверил, а затем проверяю, каждые 15 секунд говорят, и если минута изменилась, выполните проверку.

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

Я использую WPF, VS2008 и VB.NET

ТИА,

Саймон

Ответ 1

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

Ответ 2

Как сказал MrTelly, DispatcherTimer - это способ сделать это. Он тесно интегрирован с очередью диспетчера и гарантирует, что ваши обратные вызовы находятся в правильном потоке. Ниже приведены некоторые хорошие статьи об этом классе. В некотором примере кода ниже приведен пример базового примера:

//  DispatcherTimer setup
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,1);
dispatcherTimer.Start();

private void dispatcherTimer_Tick(object sender, EventArgs e)
{
    // Updating the Label which displays the current second
    lblSeconds.Content = DateTime.Now.Second;

    // Forcing the CommandManager to raise the RequerySuggested event
    CommandManager.InvalidateRequerySuggested();
}

Timer vs DispatcherTimer

Документация MSDN

Ответ 3

Не уверен в WPF, но в WinForms для этого есть таймер. Если его нет, один из способов - это следующий цикл:

  • Проверьте, не закончилась ли последняя минута.
  • Если нет, спать в течение короткого времени и снова проверять
  • Сделайте материал
  • Проверьте текущее время
  • Сохранить минута
  • Сон на 60000 мс - текущее время (сек и мс часть) - некоторое значение