如果我必须在0800-1700hrs之间执行清理任务,哪两个更好。清理程序应该每30分钟启动一次。
我可以在Windows应用程序中放入一个计时器,每隔30分钟就会触发一次并检查时间,如果在时间范围内,则调用清理程序或执行与Windows服务相同的操作
或Windows调度程序每30分钟启动一次,应用程序将检查时间并确定它是否在时间范围内,进行清理并下车..
答案 0 :(得分:19)
为了保持简单,我将创建一个执行所需清理的基本控制台应用程序。此应用程序中没有计时器/调度代码。
然后我会设置一个Windows计划,以所需的时间/间隔运行它。另外(正如Fredrik在评论中所说),如果需要,您可以轻松地手动运行控制台应用程序。
除非您在没有人登录时需要运行任务,否则我不会建议创建Windows服务,但是您还需要处理来自交互式用户的不同权限下的运行。此外,当没有人登录时,可以运行计划任务(感谢Rob)。
答案 1 :(得分:2)
您应该查看.NET的Quartz Enterprise Scheduler(开源)。您可以在Spring.NET网站上找到它。
我个人认为构建一个使用Quartz Enterprise Scheduler的Windows服务将是实现您所要求的一种整洁方式,并且将独立于Windows调度程序。在我的公司中,Windows调度程序在包括服务器在内的每台机器上都被禁用,因为有些病毒利用它来传播它们。
答案 2 :(得分:1)
您的权衡是:
Windows应用。需要有人登录并且应用正在运行。
使用Windows Scheduler的控制台应用程序。需要有人登录。
Windows服务。如果您不需要访问登录的桌面,并且无论是否有人登录都需要它,那么这是唯一的选择。
答案 3 :(得分:0)
其他人都说了什么。
唯一需要注意的是,如果您需要通过某种类型的界面来管理任务计时(例如,业务运营商希望它从0700开始运行,或者他们希望能够禁用该作业)。在这种情况下,您可以通过Power Shell以编程方式操作任务调度程序,或者让它检查一个标志以查看是否要运行它。