在Windows中定期运行.NET组件的解决方案

在Windows中定期运行.NET组件的解决方案,windows,windows-services,scheduling,Windows,Windows Services,Scheduling,我需要编写一些定期运行的.NET代码,以检查数据库表中的“未处理”项,对它们进行处理,然后将它们写回正在处理的数据库。我们可能会将其设置为每分钟运行一次 如何在Windows Server环境中的组件中进行设置,以便代码定期执行?在Windows服务中使用 您可以在windows service OnStart事件中包含这样的代码(来自MSDN): // Hook up the Elapsed event for the timer. timer.Elapsed += new ElapsedEv

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

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

在Windows服务中使用

您可以在windows service 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计划任务(启动程序附件系统工具)。。。SSIS作业调度。。。第三方作业软件(Activebatch等).

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

您可以将它设置为一个带有计时器的服务,该计时器会在您需要时关闭(对于此频率,可能是您的最佳选择),或者您可以在windows Scheduler中设置一个计划任务

如果使用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,maybe?),它将调用您的实际代码

如果代码完成时间超过一分钟,您可以将自动重启设置为
false
,然后在处理程序将控制权交还给服务时重新启用计时器