【发布时间】:2012-11-28 16:59:15
【问题描述】:
我正在编写一个自定义计时器类,它会根据一天中的计时器(也可能是一周中的一天)引发具有可变间隔的事件,以触发数据刷新。至于粒度,我可能会在小时级别有不同的间隔。
到目前为止,我想出的最佳选择是使用 24 元素数组。每当计时器滴答作响时,您都会获取当前小时(24 小时)并索引到数组中以获取新的计时器间隔。我可能需要一些逻辑来处理从长间隔到短间隔会导致错过一些预期刷新的情况(例如,如果我们从长间隔变为短间隔,则在一小时的顶部截断)。
我正在寻找一种优雅的方式来执行此操作,任何维护我的代码的人都可以清楚地了解它,并且易于在代码中使用。有没有更好的算法/方法来做到这一点?
额外细节:
用户可能会触发手动刷新,这会导致计时器重置。因此,计时器不需要勾选“按小时”或任何其他定期间隔(如1:15, 1:30, 1:45)。用户可能会在我们刚刚检查 2 分钟后触发刷新,所以如果我们每 15 分钟检查一次,我们最终可能会得到类似:1:15, 1:30, 1:32, 1:47(用户在 1:32 手动刷新,所以我们重置计时器并自动- 从那个时间点刷新 15 分钟)。
由于该间隔在我正在开发的系统中是标准的,因此我可以对它进行硬编码。在这一点上,它没有必要成为一个通用的间隔计时器(尽管本质上是通用的解决方案是受欢迎的)。
【问题讨论】: