gpt4 book ai didi

c# - 在一天中的特定时间触发事件的好方法?

转载 作者:太空狗 更新时间:2023-10-29 22:21:11 24 4
gpt4 key购买 nike

我有一个应用程序需要在一天中的特定时间触发几个事件 - 时间都是由用户定义的。我可以想到几种方法,但没有一种适合。时间不必具有特别高的分辨率 - 每个方向一分钟左右就可以了。

我的想法:

  1. 当应用程序启动时,读取所有时间并启动定时器,定时器将在适当的时间滴答

  2. 启动一个计时器,每分钟左右检查一次“当前事件”

希望有更好的解决方案。

最佳答案

  • 按下次需要关注的时间对事件进行存储/索引。这可能在内存中,也可能不在内存中,具体取决于有多少、您更改的频率等。如果您的所有事件每天触发一次,则此列表基本上是一个循环缓冲区,仅在用户更改其事件时才会更改。<
  • 启动一个计时器,该计时器将在列表开头的事件发生时“滴答作响”。如果愿意,可以四舍五入到下一分钟。
  • 当计时器触发时,处理现在已经过去的所有事件 [编辑 - 以及尚未处理的事件],如有必要,将它们重新插入列表(即如果您没有“循环”缓冲区”优化),并设置一个新的计时器。

显然,当您更改事件集或更改现有事件的时间时,您可能需要重置计时器以使其更早触发。通常没有必要将它重置为稍后触发 - 你也可以让它熄灭而不做任何事情。而且,如果您将计时器的运行时间上限设置为一分钟(或者只有一个 1 分钟的循环计时器),那么您无需重置即可获得 1 分钟以内的精度。这基本上是您的选项 2。

可以说您应该使用现有的框架而不是自己动手,但我不懂 C#,所以我不知道有什么可用的。我通常对设置大量计时器的想法持谨慎态度,因为某些环境不支持(或支持得不好)。因此这个方案只需要一个。我不知道 C# 在这方面是否有任何问题,但如果需要,这个方案可以很容易地安排使用 O(1) RAM,这是无法击败的。

关于c# - 在一天中的特定时间触发事件的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/725917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com