【发布时间】:2014-03-12 14:49:22
【问题描述】:
我正在开发一个必须在特定准确时间执行方法的 Windows 服务。
当服务启动时,它会从 SQL Server 数据库中提取几个不同的 DateTime,然后应该为每个 DateTime 启动一个线程。每个线程应该等到确切的 DateTime 值,然后做一些工作,然后再等待更短的时间,然后再做一些最后的工作。
我不想使用 System.Timers.Timer 因为:
- 该方法必须在指定的确切时间执行
- 这个确切的时间可能超过 24 小时
- 我需要将参数传递给 Elapsed 事件
我该如何实现?
谢谢。
编辑:我昨晚刚有了一个想法,如果我写一个动态轮询计时器呢?例如,如果到期日期时间超过 12 小时,它可以每小时轮询时间以重新同步。然后,如果到期日期时间超过 3 小时,它可以每 30 分钟轮询一次时间,依此类推......你怎么看?那会是一个糟糕的代码吗?
再次感谢您。
【问题讨论】:
-
这个问题的唯一正确答案是“你不能”,因为由于操作系统的限制,你不能将任何事情安排到精确的毫秒。话虽如此,为什么项目符号 1 和 2 会阻止您使用
System.Timers.Timer?
标签: c# multithreading datetime timer