如何按计划启动和停止windows服务

本文关键字:windows 服务 按计划 启动 | 更新日期: 2023-09-27 18:22:10

我编写了一个服务来执行批处理任务,但要求在下午4:00开始处理,并在凌晨5点结束处理。如果有作业仍在处理中,则需要延长时间,直到作业完成。

我会用计时器来包装开机呼叫吗?我真的不知道这会是什么样子,因为我已经习惯了服务的启动和运行,直到无穷大(或者直到盒子装满…或者遇到未处理的异常)。

对于如何实现这一目标,我肯定会很感激。

编辑:我确实需要一个服务,因为我正在通过dtexec()和C#中的批处理文件执行SSIS包。其他一些事情也必须发生,比如登录数据库和队列管理。

每项工作都有不同的时间长度,有些工作几分钟内完成,有些则需要5个小时。

如何按计划启动和停止windows服务

这听起来像是一项由Windows任务调度程序更好地处理的任务。除非你运行的是Win2K或XP之类的程序,否则它具有在特定时间启动所需的所有设置,允许它运行有限的时间,它可以在特定凭据下启动进程(如果你需要它以提升的身份运行),也可以在无人登录时运行。

它有一个非常方便的GUI来管理这一切,不需要编码!

更新

好吧,根据你的评论,你真正需要的是一个工作流程。我要做的是,在一个单独的项目中开发每个单独的任务(根据您的需要,单独的.exe或.dll)。然后查看Windows Workflow Foundation并开发一个工作流"控制器",您可以使用它来运行各个任务。

三个选项:

  1. 您可以使用Windows任务调度程序,在指定时间启动任务,然后在程序中跟踪任务运行的时间。

  2. 让服务不断"运行",但在两次执行之间睡眠一段时间。然而,如果程序运行的时间比预期的要长,就会出现问题。

  3. 将服务设置为每隔15分钟(左右)运行一次,然后检查时间。如果是在启动期间,请启动程序。

第一个和第三个似乎是最好的选择。

我认为该服务应该运行到无穷远,并检查时间,看看是否已经是下午4点了,如果已经是,就开始工作,当凌晨5点开始时,就结束并再次拖到下午4点。

您要查找的是一个计划作业

如果你/必须/有windows服务,你可以使用Timers并将计时器设置为每检查一次(无论何时,我都会用30分钟来做这类事情),如果时间在凌晨4点到5点之间,那就工作吧。

您可以看看quartz.net,它是一个很好的调度库,可以做这类事情,并且可以在服务的进程中运行。