Jos*_*ech 1 .net c# quartz.net
我正在尝试了解Quartz.NET的来龙去脉,但在实现我认为非常简单的任务方面并没有取得太大进展。
我有一个接收动作和DateTime的方法,我只需要计划动作X在时间Y运行。
这看起来很简单,但是JobBuilder.Create()需要一个实现IJob的类型参数...但是直到我掌握了Action之前,我丝毫也没想过。我无法使用定义良好的Execute(IJobExecutionContext context)方法创建某些类,因为在编译时我没有该信息。
我也无法更改方法的签名。我得到一个动作和一个DateTime,这不是我的决定。
Quartz真的不能处理这个看似简单的任务吗?
我不认为Quartz内置有这种特殊功能,但是在Quartz现有API之上实现它并不容易:
class RunActionJob : IJob
{
public void Execute(IJobExecutionContext context)
{
var action = context.MergedJobDataMap["action"] as Action;
action();
}
}
public static JobBuilder ActionJob(Action action)
{
return JobBuilder
.Create<RunActionJob>()
.SetJobData(new JobDataMap
{
{"action", action}
});
}
// Usage:
var job = ActionJob(() => Console.WriteLine("task 1..."))
.WithIdentity("task1", "group1")
.Build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1252 次 |
| 最近记录: |