2881099 / FreeScheduler

轻量化定时任务调度,支持集群、临时的延时任务和重复循环任务(可持久化),可按秒,每天/每周/每月固定时间,自定义间隔执行,支持 .NET Core 2.1+、.NET Framework 4.0+ 运行环境。
310 stars 51 forks source link

建议:临时任务可否支持持久化 #31

Open 3zengzz opened 10 months ago

3zengzz commented 10 months ago

建议:临时任务可否支持持久化,类似发短信,消息之类的任务,像hangfire 支持持久化,在可视面板查看错误信息重试。

2881099 commented 10 months ago

可以使用 AddTask 解决

static ConcurrentDictionary<string, Action> _tempTasks = new ConcurrentDictionary<string, Action>();

void OnExecuting(TaskInfo task)
{
    if (task.Topic == "tempTask")
    {
        if (_tempTasks.TryGetValue(task.Id, out var handler))
        {
            handler?.Invoke();
            _tempTasks.TryRemove(task.Id, _);
        }
    }
}

var taskId = scheduler.AddTask(topic: "tempTask", round: 1, body: "", seconds: 10);
_tempTasks.TryAdd(taskId, () => {
    Console.WriteLine("...");
});
3zengzz commented 10 months ago

您好,你发的邮件,我已收到,谢谢!