2881099/FreeScheduler

常见问题

Opened this issue · 4 comments

任务不触发

FreeScheduler 默认是串行任务设计,最多支持30个任务同时触发,超出这个量要排队触发

耗时较高的任务,避免长时间占用触发队列,可在 OnExecuting 内使用 Task.Run(() => { ... }) 的方式执行

造成的问题:上一次任务还未执行完(耗时较久的任务),下一次任务又触发了,应加大定时间隔

想问下,定时任务的执行逻辑写在哪呢?我看了例子只有临时任务才会传入委托,定时任务的传参是topic和body之类的,没有具体的执行委托传参或者类似于Job的类型传参

想问下,定时任务的执行逻辑写在哪呢?我看了例子只有临时任务才会传入委托,定时任务的传参是topic和body之类的,没有具体的执行委托传参或者类似于Job的类型传参

.OnExecuting 就是执行逻辑,根据 topic 的判断,区分执行不同的任务。

那这样任务的执行上下文岂不是不支持依赖注入?而且还要自己封装一个TaskFactory(JobFactory)才好控制任务的执行。不然任务执行全写在.OnExecuting上,代码太撕裂

依赖注入和定时任务是两码事,不要捆绑一起看待,例如下面的例子:

https://github.com/2881099/AdminBlazor/blob/5ee668cca59fa5d50b4078b80d1b5a1c0d03acf0/AdminBlazor/AdminExtensions.cs#L165

[Scheduler("任务1", "0/30 * * * * *")]
static void Scheduler001()
{
    System.Console.WriteLine("任务1 被触发...");
}

[Scheduler("任务2", "0/15 * * * * *")]
static void Scheduler002(IServiceProvider service)
{
    System.Console.WriteLine("任务2 被触发...");
}