【问题标题】:Continuously Windows Service - Repeating the same task best practiceContinuously Windows Service - 重复相同任务的最佳实践
【发布时间】:2013-01-31 10:53:59
【问题描述】:

我需要编写一个 Windows 服务,它每 X 分钟执行一次相同的操作。 关于内存管理(例如允许 GC 清理),实现这一目标的最佳方法是什么

1) while(true) 循环,使用我自己的逻辑来确保该操作仅每 X 分钟发生一次。但是我担心这会阻止 GC 清理。

2) 定时器,带有一些逻辑来确保操作所用时间是否超过定时器间隔,它确实会同时开始执行两次(比 1 更复杂)

3) 其他建议?

【问题讨论】:

  • 是什么让您认为 while 循环会“阻塞”GC? (不一定说这是您的最佳选择...)如果您在循环中定义对象,除非您需要它们长期存在,否则通常应该不是问题。

标签: .net windows .net-4.0 windows-services garbage-collection


【解决方案1】:

在 (1) 和 (2) 中,没有理由担心 GC。

(1) 如果 我自己的逻辑 没有归结为繁忙的循环(它会无缘无故地使用 CPU),则可以。实现该逻辑的最简单方法是 Sleep X 分钟。

如果任务对定期开始很重要,则

(2) 更可取:例如给定 15 分钟的间隔和从 0:00 开始,下一个任务应该在 0:15 开始,下一个在 0:30 开始,依此类推,而不是“折扣”执行任务时经过的时间。

【讨论】:

    猜你喜欢
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    相关资源
    最近更新 更多