在Windows上定时运行.NET组件的解决方案

3

我需要编写一些.NET代码,以定期间隔运行,检查数据库表中的“未处理”项目,对其进行处理,然后将已处理的项目写回到数据库。我们可能会设置它每分钟运行一次。

在Windows Server环境中,如何设置组件,以便代码定期执行?

4个回答

3

在您的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任务计划程序。它可以按给定时间间隔运行您的应用程序(请注意,如果该间隔时间那么频繁)。


3
通过Windows任务计划程序创建一个定时任务。然后,定期运行您编译的.NET EXE(我假设它是EXE)。如果您需要它运行时间少于一分钟,我认为您需要转移到Windows服务。

2

Windows定时任务(开始-程序-附件-系统工具)... SSIS作业调度... 第三方作业软件(Activebatch等)...


1

你可以将它设置为一个带有定时器的服务,以便在需要时触发(对于这种频率,这可能是最好的选择),或者你可以在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,然后在处理部分将控制权交还给服务时重新启用计时器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接