持续的Windows服务 - 重复相同的任务最佳实践

时间:2013-01-31 10:53:59

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

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

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

2)定时器,有一些逻辑可以确定操作是否花费的时间长于定时器间隔,它会同时开始执行两次(更复杂的是1)

3)其他建议?

1 个答案:

答案 0 :(得分:1)

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

(1)没关系,如果我自己的逻辑不归结为忙循环(这将无缘无故地使用CPU)。实现该逻辑的最简单方法是Sleep X分钟。

如果开始的任务非常重要,那么

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