【问题标题】:Time event every predefined time (15min )每个预定义时间(15 分钟)的时间事件
【发布时间】:2014-05-17 15:24:04
【问题描述】:

我有一个问题,我似乎无法解决它。 我想要的只是根据系统时钟在预定义的时间触发一个事件,例如每 15 分钟 30 分钟或 1 小时。

我最好在不使用 c# 计时器的情况下执行此操作。

更进一步的解释是,比如用户选择了15分钟的轮询时间,当前时间是8点49分。

事件将在 9:04 触发,没有延迟。

这可以在没有系统计时器的情况下完成吗?

【问题讨论】:

  • 好吧,我不太了解挂钩,但可能可以挂钩系统时间函数来实现您想要的。
  • 只需使用计时器,并为每个用户投票妥善维护它们...如果您正确启动和停止计时器,则不会发生滞后..
  • 要找到一个比使用定时器“更好”的解决方案(通常一个就足够了!)你必须解释你不喜欢它们的什么?!它们旨在做你想做的事,那么问题出在哪里?
  • 我用计时器制作了应用程序。例如,它每 900 秒轮询一次,等于 15 分钟,我注意到它滞后了几秒钟。
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。

标签: c# events datetime timer intervals


【解决方案1】:

解决这个问题有两种选择:

  • 使用定时器控件。最简单的方法
  • 使用静态方法Thread.Sleep(int milliseconds)。使用这种方法有一个小问题,因为该方法阻塞了启动Thread.Sleep(int) 的线程。例如,如果您在主线程中启动它,该方法将阻止它。因此,为了解决这个问题,您可以创建一个新线程,然后在新线程中创建 Thread.Sleep(int ms)

【讨论】:

    【解决方案2】:

    不知道这是否符合您的需求,但如果您必须安排很多工作/活动,那么 Quartz.NET 可能是正确的选择

    http://www.quartz-scheduler.net/features.html

    【讨论】:

      猜你喜欢
      • 2017-08-26
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      相关资源
      最近更新 更多