您的位置:首页 > 运维架构 > 网站架构

Quartz.NET 架构与源代码分析系列 part 2 :Job 作业

2009-03-12 23:30 405 查看
在上一篇Quartz.NET 架构与源代码分析系列 part 1 :Quartz.NET 入门我们介绍了Quartz.NET 的基本知识和简单的应用,可以看出来它的使用是非常简单的,只要短短的几行代码就可以在自己的应用程序嵌入强大的作业调度功能。图1是调度器的原理示意图。

Code
public interface IStatefulJob : IJob
{
}

public interface IInterruptableJob : IJob
{
void Interrupt();
}

IInterruptableJob 接口提供了一个中断方法,但是 IStatefulJob 没有自己的方法。从 Quartz.NET 官方了解到:


一个 Job 实例可以被定义为“有状态的”或者“无状态的”。在执行无状态的任务过程中任何对 JobDataMap 所作的更改都将丢失。有状态的任务恰好相反,它在任务的每次执行之后重新存储 JobDataMap 。有状态任务的一个缺点就是它不能并发执行。也就是说,如果任务有状态,那么当触发器试图触发它,触发器就会被阻塞直到前面的执行完成。想使任务有状态,它就要实现 IStatefulJob 接口而不是实现IJob接口。


从上面可以知道 IStatefulJob 应该有管理 JobDataMap 的方法,但这个接口在 Quartz.NET 1.0 版本还没有实现。预计在以后的版本应该会加强这个功能的。

示例效果





图4 Quartz.NET 示例图

该示例还不够完善,所以源代码没有传上来,计划在下一篇就共享出来。

下一篇文章我们将进入第3 部分:Trigger 触发器

参考文章

1.The Official Quartz.NET Tutorial

2.Quartz.net官方开发指南 第三课:更多关于Jobs和JobDetails

目录: Quartz.NET 架构与源代码分析系列

上一篇:Quartz.NET 架构与源代码分析系列 part 1 :Quartz.NET 入门

下一篇:Quartz.NET 架构与源代码分析系列 part 3 :Trigger 触发器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐