我正在创建一个Windows服务,用于将软件自动部署到多个不同的环境中。
启动服务时,它会实例化一个自定义Deployer对象。 Deployer对象首先读入一个配置文件,其中包含环境列表及其部署时间,例如QA-0900,1400,用于在上午9点和下午2点部署到QA。然后它启动一个超时为45秒的Timer,然后检查每个超时,如果当前时间与列表中的时间匹配。如果找到匹配项,则会开始部署到该环境。
每45秒进行一次轮询似乎很愚蠢和低效,但我认为没有更好的方法可以做到这一点。
有任何想法吗?
答案 0 :(得分:7)
是否必须是Windows服务流程?这听起来像是可以使用Windows task scheduling系统完成的事情。特别是如果您使用的是Windows Server 2008,则任务调度非常强大,可以通过编程方式管理任务。
答案 1 :(得分:1)
按到期时间对列表进行排序,选择第一项,直到那时休息。
答案 2 :(得分:0)
检查任务调度程序,如上面ppl所提到的,虽然我不确定,加上他们说它和他们在win 2008中说的一样好。对于我的工作,任务调度程序不足以保持winxp和win2003服务器记住..
在Win Service中,您可能创建仅在设置时触发的事件,您将在创建事件时设置这些事件,因此在此时它会调用,然后您的服务将在事件中执行已定义的任务。 除了该服务将继续使用Thread.Sleep(10000),这是公平的,你可以做一个小的分析,以查看性能\内存占用。