❤️ 关注 Furion 微信公众号有惊喜哦!
Skip to main content

17. Schedular 静态类

版本说明

以下内容仅限 Furion 4.8.0 + 版本使用。

17.1 启动调度作业服务

该功能 建议 仅限不能通过 services.AddXXX 方式使用,比如控制台,Winfrom/WPF 等。

IDisposable dispose =  ScheduleServe.Run(options =>
{
options.AddJob<MyJob>(Triggers.Secondly());
});

这种方式有一个隐藏的巨大隐藏 “骚操作”:可以在任何地方创建作业调度服务,多次调用可以创建多个作业调度器。

推荐使用 Serve.Run()Serve.RunGeneric() 方式替代

Furion 框架提供了 Serve.Run() 方式支持跨平台使用,还能支持注册更多服务,如:

Serve.Run(services =>
{
services.AddSchedule(options =>
{
options.Add<MyJob>(Triggers.Secondly());
});
})

如无需 Web 功能,可通过 Serve.RunGeneric 替代 Serve.Run

17.2 获取作业调度计划工厂

var schedulerFactory = Schedular.GetFactory();

17.3 获取作业

var scheduler = Schedular.GetJob("作业 Id");

17.4 序列化作业触发器参数或作业信息额外数据

// 作业触发器参数
var args = new object[] { "* * * * * *", CronStringFormat.WithSeconds };
var stringArgs = Schedular.Serialize(args);

// 作业额外数据
var jobData = new Dictionary<string, object> { { "name", "Furion" } };
var stringJobData = Schedular.Serialize(jobData);

17.5 反序列化作业触发器参数或作业信息额外数据

// 作业触发器参数
var stringArgs = "[\"* * * * *\",0]";
var args = Schedular.Deserialize<object[]>(stringArgs);

// 作业额外数据
var stringJobData = "{\"name\":\"Furion\"}";
var args = Schedular.Deserialize<Dictionary<string, object>>(stringJobData);