如何在时钟时间制作一些事件

本文关键字:事件 时间 时钟 | 更新日期: 2023-09-27 18:37:22

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

目前,我看到的唯一变体是使用FutureTime - Now中的TimpeStamp启动新计时器

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

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

如何在时钟时间制作一些事件

为此最好使用 Windows 任务计划程序。

有关一些详细信息,请参阅此处:创建计划任务

您可以创建 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();
}