如何在时钟时间举办一些活动?

Posted

技术标签:

【中文标题】如何在时钟时间举办一些活动?【英文标题】:How to make some event on clock time? 【发布时间】:2013-10-30 09:53:18 【问题描述】:

我的意思是我想做点什么:例如明天早上 6 点(基于时钟的活动)

目前我看到的唯一变体是使用 TimpeStampFutureTime - Now 开始新计时器

但是这个解决方案看起来很丑,特别是当我有很多事件时,它会迫使我有很多计时器,或者以某种方式让计时器首先处理几乎事件,然后重新计算等待下一个事件的时间。并重新计算每次我将新事件推送到事件集合的时间。

只是问是否有比我的解决方案更理智的东西?或者如果已经有一些免费使用的库。

【问题讨论】:

【参考方案1】:

为此使用 Windows 任务计划程序可能会更好。

详情请看这里:Creating Scheduled Tasks

【讨论】:

但是我可以用它执行我的代码吗?我需要执行我的代码。 @Heather 它在运行可执行文件的级别上工作,因此您将编写可执行文件,然后设置任务以在特定时间运行可执行文件。使用 Windows 任务计划程序的优点是,如果计算机在其间重新启动,事情仍然会在正确的时间运行。 我认为github.com/quartznet/quartznet(来自您提供的链接)正是我所需要的。【参考方案2】:

您可以创建 1 个计时器以每 x 秒执行一次,并迭代一系列事件并检查它是否需要执行。

如果某个事件必须执行,请在单独的线程上执行它以确保它不会中断计时器线程。

事件类

class Event

    DateTime TargetDate;
    bool Completed = false;
    IExecuter Executer;

IExecuter 接口

interface IExecuter

    void Execute();

IExecuter 实现示例

class LogEvent : IExecuter

    void Execute()
         // Log event details to DB or Console or whatever
    

示例定时器循环

foreach (Event e in eventArr)

    if(e.TargetDate == DateTime.Now && !e.Completed)
        e.Executer.Execute();

【讨论】:

以上是关于如何在时钟时间举办一些活动?的主要内容,如果未能解决你的问题,请参考以下文章

如何精准实现OCR文字识别?

如何在 Excel 中显示正在运行的时钟?

博客园&顺顺智慧联合线下沙龙活动:研发进度太慢,开发人员如何破局?

如何使数字时钟只显示小时和分钟

如何防止 Heroku 时钟测功机睡在免费套餐上?

NYOJ 14 贪心解题报告