Ночное обновление БД с Windows Service - PullRequest
1 голос
/ 19 июля 2011

Я очень новичок в службах Windows.и я пытаюсь создать приложение, которое будет обновлять базу данных ночью.

У меня уже есть код, который работает (для самого обновления)

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

  Protected Overrides Sub OnStart(ByVal args() As String)
    ' Add code here to start your service. This method should set things
    ' in motion so your service can do its work.

    Dim timerDelegate As New TimerCallback(UpdateDB)
    serviceTimer = New Timer(timerDelegate, Nothing, 0, 20000)

End Sub

Protected Overrides Sub OnStop()
    ' Add code here to perform any tear-down necessary to stop your service.
End Sub

Насколько я понимаю, приведенный выше код будет работать очень 20 секунд, верно?Как я могу кодировать его так, чтобы он работал только один раз в день ... скажем, в полночь.

спасибо!

или я должен использовать веб-сервис?я могу запланировать это?

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

Вам нужно использовать службу Windows?

Более простой подход - создать консольное приложение и использовать для его запуска планировщик Windows.

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

0 голосов
/ 19 июля 2011

Возможным решением будет запуск вашего таймера с интервалом 1000ms (в зависимости от того, насколько точным / близким вам должно быть быть до фактической полуночи). Очевидно, что чем меньше ваш интервал, тем ближе вы подойдете к полуночи.

Вы можете увеличивать это, скажем, каждые 5 минут, если хотите, чтобы в таймере происходило меньше активности, и если ваш порог выполнения мог быть +5 минут после полуночи.

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

Если текущее время - полночь или в пределах установленного вами значения полуночи, выполните код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...