我需要编写一些.NET代码,以定期间隔运行,检查数据库表中的“未处理”项目,对其进行处理,然后将已处理的项目写回到数据库。我们可能会设置它每分钟运行一次。
在Windows Server环境中,如何设置组件,以便代码定期执行?
我需要编写一些.NET代码,以定期间隔运行,检查数据库表中的“未处理”项目,对其进行处理,然后将已处理的项目写回到数据库。我们可能会设置它每分钟运行一次。
在Windows Server环境中,如何设置组件,以便代码定期执行?
在您的Windows服务中使用System.Timers.Timer。
您可以在Windows服务的OnStart事件中使用如下代码(来自MSDN):
// Hook up the Elapsed event for the timer.
timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// Set the Interval to 2 seconds (2000 milliseconds).
timer.Interval = 2000;
timer.Enabled = true;
...........
// Specify what you want to happen when the Elapsed event is raised.
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
......
}
如果间隔时间不是很频繁,例如每天运行一次,建议考虑使用Windows任务计划程序。它可以按给定时间间隔运行您的应用程序(请注意,如果该间隔时间不那么频繁)。
Windows定时任务(开始-程序-附件-系统工具)... SSIS作业调度... 第三方作业软件(Activebatch等)...
你可以将它设置为一个带有定时器的服务,以便在需要时触发(对于这种频率,这可能是最好的选择),或者你可以在Windows计划任务中设置一个计划任务。
如果你选择使用Windows服务路线,那么你的Start()方法将会类似于:
Timer tmr = new Timer(60000, true) //this could be wrong: set it for one minute and turn on auto-reset.
tmr.Start();
然后你将有一个事件处理程序来处理计时器的事件(现在记不起名字了:Tick,也许?),它将调用你的实际代码。
如果你的代码需要超过一分钟才能完成,你可以将自动重启设置为false
,然后在处理部分将控制权交还给服务时重新启用计时器。