在可配置的计划上运行任务的最有效方法

时间:2010-12-30 18:02:18

标签: c# .net windows-services

我正在创建一个Windows服务,用于将软件自动部署到多个不同的环境中。

启动服务时,它会实例化一个自定义Deployer对象。 Deployer对象首先读入一个配置文件,其中包含环境列表及其部署时间,例如QA-0900,1400,用于在上午9点和下午2点部署到QA。然后它启动一个超时为45秒的Timer,然后检查每个超时,如果当前时间与列表中的时间匹配。如果找到匹配项,则会开始部署到该环境。

每45秒进行一次轮询似乎很愚蠢和低效,但我认为没有更好的方法可以做到这一点。

有任何想法吗?

3 个答案:

答案 0 :(得分:7)

是否必须是Windows服务流程?这听起来像是可以使用Windows task scheduling系统完成的事情。特别是如果您使用的是Windows Server 2008,则任务调度非常强大,可以通过编程方式管理任务。

答案 1 :(得分:1)

按到期时间对列表进行排序,选择第一项,直到那时休息。

答案 2 :(得分:0)

检查任务调度程序,如上面ppl所提到的,虽然我不确定,加上他们说它和他们在win 2008中说的一样好。对于我的工作,任务调度程序不足以保持winxp和win2003服务器记住..

在Win Service中,您可能创建仅在设置时触发的事件,您将在创建事件时设置这些事件,因此在此时它会调用,然后您的服务将在事件中执行已定义的任务。 除了该服务将继续使用Thread.Sleep(10000),这是公平的,你可以做一个小的分析,以查看性能\内存占用。