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 触发器
2.Quartz.net官方开发指南 第三课:更多关于Jobs和JobDetails
目录: Quartz.NET 架构与源代码分析系列
上一篇:Quartz.NET 架构与源代码分析系列 part 1 :Quartz.NET 入门
下一篇:Quartz.NET 架构与源代码分析系列 part 3 :Trigger 触发器
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 Tutorial2.Quartz.net官方开发指南 第三课:更多关于Jobs和JobDetails
目录: Quartz.NET 架构与源代码分析系列
上一篇:Quartz.NET 架构与源代码分析系列 part 1 :Quartz.NET 入门
下一篇:Quartz.NET 架构与源代码分析系列 part 3 :Trigger 触发器
相关文章推荐
- Quartz.NET 架构与源代码分析系列 part 3 :Trigger 触发器
- Quartz.NET 架构与源代码分析系列 part 1 :Quartz.NET 入门
- BlogEngine.Net架构与源代码分析系列part11:开发扩展(下)——自定义Theme
- BlogEngine.Net架构与源代码分析系列part15:总结篇
- BlogEngine.Net架构与源代码分析系列part5:对象搜索——IPublishable与Search
- BlogEngine.Net架构与源代码分析系列part6:开放API——MetaWeblog与BlogImporter
- BlogEngine.Net架构与源代码分析系列part12:页面共同的基类——BlogBasePage
- BlogEngine.Net架构与源代码分析系列part5:对象搜索——IPublishable与Search
- Quartz.NET 架构与源代码分析系列
- BlogEngine.Net架构与源代码分析系列part8:扩展——DataStore分析
- BlogEngine.Net架构与源代码分析系列part4:Blog全局设置——BlogSettings
- BlogEngine.Net架构与源代码分析系列part5:对象搜索——IPublishable与Search
- BlogEngine.Net架构与源代码分析系列part10:开发扩展(中)——Widget小工具
- BlogEngine.Net架构与源代码分析系列part4:Blog全局设置——BlogSettings
- BlogEngine.Net架构与源代码分析系列part4:Blog全局设置——BlogSettings
- BlogEngine.Net架构与源代码分析系列part9:开发扩展(上)——Extension与管理上的实现
- BlogEngine.Net架构与源代码分析系列part13:实现分析(上)——HttpHandlers与HttpModules
- BlogEngine.Net架构与源代码分析系列part4:Blog全局设置——BlogSettings
- BlogEngine.Net架构与源代码分析系列part5:对象搜索——IPublishable与Search
- BlogEngine.Net架构与源代码分析系列part7:Web2.0特性——Pingback&Trackback