2881099 / IdleBus

IdleBus 空闲对象管理容器,有效组织对象重复利用,自动创建、销毁,解决【实例】过多且长时间占用的问题。
109 stars 26 forks source link

IdleScheduler 增加指定时间执行等改进意见 #6

Open hd2y opened 2 years ago

hd2y commented 2 years ago

增加获取任务后续执行时间

获取任务计划执行时间,count 指定次数:

IEnumerable<DateTimeOffset> GetTaskNextRunDateTime(int count);

增加自定义执行时间

增加抽象类用于获取下次执行时间:

public abstract class TaskRunner
{
    public TaskRunner(string expression)
    {
        Expression = expression;
    }
    public string Expression { get; }
    public abstract DateTimeOffset? GetTaskNextRunDateTime(DateTimeOffset? dateTime);
}

增加对应创建任务的方法:

string AddTask(string topic, string body, TaskRunner runner)

使用者可以自己实现一个基于 Cron 表达式的版本:

推荐引用 Cronos

public class CronTaskRunner : TaskRunner
{
    public CronTaskRunner(string expression) : base(expression) { }

    public override DateTimeOffset? GetTaskNextRunDateTime(DateTimeOffset? dateTime)
    {
        CronExpression expression = CronExpression.Parse(Expression);
        DateTimeOffset? next = expression.GetNextOccurrence(DateTimeOffset.Now, TimeZoneInfo.Local);

        return next;
    }
}