我想编写一个用户可以调度的Windows服务。即用户可以选择每天从上午9点到下午6点运行服务,或者他可以每天晚上从晚上12点到下一天早上6点开始运行服务。是否有任何框.NET API将帮助我做到这一点?我知道我可以使用计划任务来做到这一点,但有什么方法可以通过程序来完成吗?用.NET编写一个预定的Windows服务
3
A
回答
6
我的第一反应是质疑为什么服务?但更重要的是,问题是为什么不使用操作系统提供的强大的调度程序?
也就是说,一个Windows服务几乎只是一个应用程序运行的线程。您可以将它分为两部分,第一部分是在定时器上执行的服务本身。服务的启动可以检查注册表值以确定它应该执行的频率。
该服务的第二部分将是一个小窗口应用程序,允许用户设置时间表,当然,将它写入前面提到的注册表值。
没有任何您需要的特殊API。
0
如果您打算安排它,只需构建一个控制台程序并向安装程序添加一些代码,以帮助用户在Windows中设置计划任务。
7
我使用Quartz.NET在Windows服务中执行预定任务的结果很好。你可以做所有事情,从简单的间隔时间表到克朗风格的时间表。
2
如果您不希望用户必须处理任务计划程序,那么您应该编写一个程序,让他们选择运行该程序的日期和时间,然后以编程方式将计划任务设置为他们。这样他们就不需要具体了解你正在运行什么进程,而且他们也不必知道如何使用任务调度器。他们只是从你的应用程序做到这一切。
0
我实现了一些无人参与的服务(使用c#编写的Windows服务),使用crontab算法来管理调度。该模式功能强大,灵活。我们可以在任何时候创建时间表,只使用cron表达式。也许我错了,但我认为cron没有涵盖的唯一时间表是我们想要在每月的最后一天,但这不是所有服务的要求。
我从互联网上的一篇文章(由Atif Aziz开源)复制了cron算法,并在我的实用工具类中实施,多年来工作得非常好。
查看更多详细信息,在我的博客: CronTab schedule parser algorithm
干杯!
Roberto
相关问题
- 1. 是一个c + + windows服务比.net windows服务更稳定 - ?
- 2. 编程一个Windows服务
- 3. 如何保持一个Windows服务(.Net)
- 4. .net windows服务
- 5. Windows服务:编写一个软件的安全功能
- 6. 使用.NET编写Web服务中单个文件的问题
- 7. 如何使用C#.NET中的Windows服务调用Windows服务?
- 8. Windows服务和线程编程.NET
- 9. .NET Windows服务用户名
- 10. 为.NET Web服务编写输入
- 11. .NET的Windows服务从DLL
- 12. .Net Windows服务中的StackOverflowException
- 13. ASP.NET:编写一个自定义的服务器端验证器
- 14. 我如何编写一个Windows服务来管理其他的Windows服务?(我能吗?)
- 15. 编写基于.NET的REST服务 - 使用线程池和Singleton
- 16. 围绕FileSystemWatcher.Changed编写一个简单的.NET包装服务事件
- 17. Windows服务与.NET核心
- 18. .Net Core 2.0 Windows服务
- 19. 安装.NET Windows服务
- 20. .NET撕下Windows服务
- 21. .Net Windows服务不运行
- 22. 如何获取用C#编写的Windows服务中的ServiceName?
- 23. 由C#编写的Windows服务使用的类库程序集#
- 24. 启动一个禁用的Windows服务?
- 25. 我应该用Go编写一个跨平台的服务吗?
- 26. 部署一个用Ruby编写的TCP服务器
- 27. 编写一个排队任务的服务器
- 28. 如何让Windows意识到我用Python编写的服务?
- 29. 如何调试在VS2008中用VC++编写的Windows服务?
- 30. 从用C编写的Windows服务访问映射文件夹