C# 在特定时间运行进程的最佳方式

C# 在特定时间运行进程的最佳方式,c#,service,C#,Service,嗨,我在C#中有一个Windows服务。在我的windows服务中,我需要在确定的时间内运行进程hh:mm:ss 例如,我需要在以下位置运行流程: 09:50 11时45分 15:15小时 22时05分 (这些时间可能会改变,所以我考虑将它们存储在XML文件中) 现在我曾经有一个间隔为6小时的计时器,所以每6小时执行一次进程。现在的要求是另一个。我需要按照特定的时间表跑步 另外,我还被要求添加一个选项,windows服务可以每X小时和Y分钟运行一次进程 有什么线索我该怎么编码 谢谢。为什么要

嗨,我在
C#
中有一个Windows服务。在我的windows服务中,我需要在确定的时间内运行进程hh:mm:ss

例如,我需要在以下位置运行流程:

  • 09:50
  • 11时45分
  • 15:15小时
  • 22时05分
(这些时间可能会改变,所以我考虑将它们存储在XML文件中)

现在我曾经有一个间隔为6小时的计时器,所以每6小时执行一次进程。现在的要求是另一个。我需要按照特定的时间表跑步

另外,我还被要求添加一个选项,windows服务可以每X小时和Y分钟运行一次进程

有什么线索我该怎么编码


谢谢。

为什么要重新发明轮子?只需使用Windows任务计划程序运行您的进程


如果要从代码中设置任务调度程序,可以使用

Quartz.NET
Quartz.NET是一个功能齐全、开源的作业调度系统 可以从最小的应用程序到大型企业系统使用

石英中的作业调度

作业计划在给定触发器发生时运行。 触发器几乎可以通过以下任意组合创建 指令:

  • 在一天中的某个时间(毫秒)
  • 在一周中的某些日子
  • 在一个月的某些日子
  • 在一年中的某些日子
  • 不在注册日历中列出的特定日期(如商务假期)
  • 重复特定次数
  • 重复到特定的时间/日期
  • 无限期地重复
  • 以延迟间隔重复

你在这里寻找什么样的答案?除了“使用计时器”还有什么别的吗?我想知道检查这些特定时间的最佳方法。我在考虑将计时器设置为1秒的间隔,然后验证小时是否为机器小时,然后执行它。这听起来是个不错的计划。你能不能不使用调度程序来执行windows服务。。如果不是,则使用一个.config文件,该文件包含要运行程序的小时数的字符串数组。您是否关心不同权限提供的系统时间更改,例如夏令时?石英(如Reza所建议的)可以帮助解决这个问题。闰秒可能是另一个问题。(.)也来推荐这个。