使用Windows服务每夜更新数据库

时间:2011-07-19 14:40:28

标签: vb.net web-services windows-services

我对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 个答案:

答案 0 :(得分:2)

您需要使用Windows服务吗?

更简单的方法是创建一个控制台应用程序并使用Windows调度程序启动它。

Windows服务可能很难安装和调试,因此我只会在绝对必要时使用它们。

答案 1 :(得分:0)

一种可能的解决方案是让您的计时器以1000ms间隔执行(取决于您需要与实际午夜的精确/接近程度)。显然,你的间隔越低,你就越接近午夜。

如果您希望计时器内的活动减少,并且您的执行阈值可能是午夜后的+5分钟,您可以每5分钟增加一次。

每次计时器触发时,您都会检查当前时间与您尝试触发事件的时间,在这种情况下是午夜。

如果当前时间是午夜,或者在您定义的午夜的阈值内,则执行您的代码。