c# - 每小时运行一次的 Windows 服务

标签 c# .net windows-services cron

我能够构建 Windows 服务并安装它。

我很好奇如何才能每小时运行一次此服务?我希望它每隔一小时定期运行一次。

我还需要知道它运行的小时范围,以便我可以将它存储在某个地方。

我该怎么做?

编辑:此服务将安装在许多机器上,因此,我不想在 100 台服务器上创建计划任务。

最佳答案

如果您希望任务定期运行而不是持续运行,您应该考虑使用 Task Scheduler .

如果您需要将您的代码作为服务,但每小时“激活”一次,最简单的方法是让您的服务成为一个 COM 对象,并安排一个简单的任务每小时调用一个 jscript/vbscript 来创建您的 COM 对象并对其调用简单的方法。

另一种方法是使用任何等待 API 来“浪费”一个小时而不消耗周期。

请注意,您还必须根据您的场景考虑一些有趣的设计决策:

  • 如果服务崩溃或被用户停止,您的服务将如何启动?
  • 如果您在一个多小时后才开始,您是应该再次运行还是需要等待以达到准确的每小时时间表?
  • 如果在您不活动时时区或夏令时发生变化,您如何跟踪上次“激活”时间?
  • 您的服务是否会阻止计算机在空闲时或笔记本电脑盖关闭时进入休眠/休眠状态?如果不是,您是否需要按时唤醒计算机以使您的服务按计划进行?

其中一些由任务调度程序处理,因此我强烈建议您走这条路,而不是在您的代码中等待一个小时。

关于c# - 每小时运行一次的 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2589682/

相关文章:

.net - Excel 引用 COM 与 .NET

.net - .NET 中的 System.String.Copy 有什么用?

.net - .net 中的 Windows 服务无法解析 tns 服务名称

c# - Web 应用程序中用于周期性任务的子系统

c# - MVC 6 组权限无法获取角色

c# - 函数来获取任何方法的名称?

C# WPF 想要点击 Stackpanel 的 child

c# - 为什么我无法安装我的 Windows 服务 - 指定的服务已经存在

c# - C# 中的正则表达式组

javascript - 如何将 Javascript 文件对象+数据发送到 MVC 6 Controller - ASP.NET 5