使用普通Windows服务创建Quartz.Net服务项目
2014-07-14 12:08
399 查看
使用普通Windows服务创建Quartz.Net服务项目
首先创建Quartz.Net.2.0解决方案,添加 Windows服务 项目,添加安装程序,修改服务运行账户类型为LocalSystem(默认为User)
添加C5.dll、Common.Logging.dll、Common.Logging.Log4Net.dll、log4net.dll、Quartz.dll引用
C5.dll 一个C#和其他CLI语言的泛型集合类。.Net2.0及以上才可以使用。简介地址:http://www.itu.dk/research/c5/ Common.Logging.dll 通用日志接口 Common.Logging.Log4Net.dll 提供log4net对通用日志接口(Common.Logging)的实现 log4net.dll 小白都知道不解释
添加quartz.config文件 Quartz.Net的配置文件,并设置编译时生成到输出目录为始终复制
Windows服务文件上右键查看代码,编写Quartz服务启动代码,重写OnStart、OnStop、OnPause、OnContinue方法,分别对应IScheduler的Start、Shutdown、PauseAll、ResumeAll方法,详见代码
View Code
日志记录时可以根据需要使用Common.logging或者log4net,因为Quartz.Net使用的Common.logging的log4net实现,所以必须同时引用这两个dll,具体项目中引用这两个任意一个效果都是一样的(在使用log4net的前提下)
源文件下载:Quartz-2.0Demo.rar
PS:
有很多人问Quartz启动后,关闭服务时无法及时关闭,必须杀进程才可以,解决方法时在调用Shutdown方法时传入参数false,即不等待任务运行结束立即关闭
首先创建Quartz.Net.2.0解决方案,添加 Windows服务 项目,添加安装程序,修改服务运行账户类型为LocalSystem(默认为User)
添加C5.dll、Common.Logging.dll、Common.Logging.Log4Net.dll、log4net.dll、Quartz.dll引用
C5.dll 一个C#和其他CLI语言的泛型集合类。.Net2.0及以上才可以使用。简介地址:http://www.itu.dk/research/c5/ Common.Logging.dll 通用日志接口 Common.Logging.Log4Net.dll 提供log4net对通用日志接口(Common.Logging)的实现 log4net.dll 小白都知道不解释
添加quartz.config文件 Quartz.Net的配置文件,并设置编译时生成到输出目录为始终复制
Windows服务文件上右键查看代码,编写Quartz服务启动代码,重写OnStart、OnStop、OnPause、OnContinue方法,分别对应IScheduler的Start、Shutdown、PauseAll、ResumeAll方法,详见代码
View Code
2012-04-15 08:10:28,391 INFO Quartz.Impl.StdSchedulerFactory - Quartz.NET properties loaded from configuration file 'D:\QuartzService\quartz.config' 2012-04-15 08:10:28,438 INFO Quartz.Impl.StdSchedulerFactory - Using default implementation for object serializer 2012-04-15 08:10:28,478 INFO Quartz.Impl.StdSchedulerFactory - Using default implementation for ThreadExecutor 2012-04-15 08:10:28,498 INFO Quartz.Core.SchedulerSignalerImpl - Initialized Scheduler Signaller of type: Quartz.Core.SchedulerSignalerImpl 2012-04-15 08:10:28,498 INFO Quartz.Core.QuartzScheduler - Quartz Scheduler v.2.0.0.400 created. 2012-04-15 08:10:28,502 INFO Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin - Registering Quartz Job Initialization Plug-in. 2012-04-15 08:10:28,517 INFO Quartz.Simpl.RAMJobStore - RAMJobStore initialized. 2012-04-15 08:10:28,540 INFO Quartz.Simpl.RemotingSchedulerExporter - Registering remoting channel of type 'System.Runtime.Remoting.Channels.Tcp.TcpChannel' to port (555) with name (httpQuartz) 2012-04-15 08:10:28,540 INFO Quartz.Simpl.RemotingSchedulerExporter - Remoting channel registered successfully 2012-04-15 08:10:28,541 INFO Quartz.Simpl.RemotingSchedulerExporter - Successfully marhalled remotable scheduler under name 'QuartzScheduler' 2012-04-15 08:10:28,543 INFO Quartz.Core.QuartzScheduler - Scheduler meta-data: Quartz Scheduler (v2.0.0.400) 'ServerScheduler' with instanceId 'NON_CLUSTERED' Scheduler class: 'Quartz.Core.QuartzScheduler' - access via remote incovation. NOT STARTED. Currently in standby mode. Number of jobs executed: 0 Using thread pool 'Quartz.Simpl.SimpleThreadPool' - with 10 threads. Using job-store 'Quartz.Simpl.RAMJobStore' - which does not support persistence. and is not clustered. 2012-04-15 08:10:28,543 INFO Quartz.Impl.StdSchedulerFactory - Quartz scheduler 'ServerScheduler' initialized 2012-04-15 08:10:28,543 INFO Quartz.Impl.StdSchedulerFactory - Quartz scheduler version: 2.0.0.400 2012-04-15 08:10:28,554 INFO Quartz.Xml.XMLSchedulingDataProcessor - Parsing XML file: D:\QuartzService\quartz_jobs.xml with systemId: ~/quartz_jobs.xml 2012-04-15 08:10:28,930 INFO Quartz.Xml.XMLSchedulingDataProcessor - Adding 2 jobs, 3 triggers. 2012-04-15 08:10:28,933 INFO Quartz.Xml.XMLSchedulingDataProcessor - Adding job: DeomJobGroup.DemoJob1 2012-04-15 08:10:28,937 INFO Quartz.Xml.XMLSchedulingDataProcessor - Adding job: DeomJobGroup.DemoJob2 2012-04-15 08:10:28,997 INFO Quartz.Core.QuartzScheduler - Scheduler ServerScheduler_$_NON_CLUSTERED started. 2012-04-15 08:10:28,997 INFO Quartz.Net.Service.QuartzService - Quartz服务成功启动 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 任务开始运行 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行0 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行1 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行2 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行3 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行4 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行5 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行6 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行7 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行8 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行9 2012-04-15 08:10:30,041 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1任务运行结束 2012-04-15 08:11:00,002 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 任务开始运行 2012-04-15 08:11:00,002 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行0 2012-04-15 08:11:00,002 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行1 2012-04-15 08:11:00,002 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行2 2012-04-15 08:11:00,002 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行3 2012-04-15 08:11:00,002 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行4 2012-04-15 08:11:00,003 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行5 2012-04-15 08:11:00,003 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行6 2012-04-15 08:11:00,003 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行7 2012-04-15 08:11:00,003 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行8 2012-04-15 08:11:00,003 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行9 2012-04-15 08:11:00,003 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1任务运行结束 2012-04-15 08:11:00,003 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2 任务开始运行 2012-04-15 08:11:00,004 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2 正在运行0 2012-04-15 08:11:00,004 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2 正在运行1 2012-04-15 08:11:00,004 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2 正在运行2 2012-04-15 08:11:00,004 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2 正在运行3 2012-04-15 08:11:00,004 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2 正在运行4 2012-04-15 08:11:00,004 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2 正在运行5 2012-04-15 08:11:00,004 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2 正在运行6 2012-04-15 08:11:00,004 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2 正在运行7 2012-04-15 08:11:00,004 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2 正在运行8 2012-04-15 08:11:00,004 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2 正在运行9 2012-04-15 08:11:00,005 INFO Quartz.Net.Demo.DemoJob2 - DemoJob2任务运行结束 2012-04-15 08:11:29,999 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 任务开始运行 2012-04-15 08:11:29,999 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行0 2012-04-15 08:11:29,999 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行1 2012-04-15 08:11:29,999 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行2 2012-04-15 08:11:29,999 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行3 2012-04-15 08:11:29,999 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行4 2012-04-15 08:11:29,999 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行5 2012-04-15 08:11:29,999 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行6 2012-04-15 08:11:29,999 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行7 2012-04-15 08:11:29,999 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行8 2012-04-15 08:11:30,000 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1 正在运行9 2012-04-15 08:11:30,000 INFO Quartz.Net.Demo.DemoJob1 - DemoJob1任务运行结束 2012-04-15 08:11:32,607 INFO Quartz.Core.QuartzScheduler - Scheduler ServerScheduler_$_NON_CLUSTERED shutting down. 2012-04-15 08:11:32,608 INFO Quartz.Core.QuartzScheduler - Scheduler ServerScheduler_$_NON_CLUSTERED paused. 2012-04-15 08:11:32,611 INFO Quartz.Simpl.RemotingSchedulerExporter - Successfully disconnected remotable scheduler 2012-04-15 08:11:32,612 INFO Quartz.Core.QuartzScheduler - Scheduler ServerScheduler_$_NON_CLUSTERED Shutdown complete. 2012-04-15 08:11:32,612 INFO Quartz.Net.Service.QuartzService - Quartz服务成功终止
日志记录时可以根据需要使用Common.logging或者log4net,因为Quartz.Net使用的Common.logging的log4net实现,所以必须同时引用这两个dll,具体项目中引用这两个任意一个效果都是一样的(在使用log4net的前提下)
源文件下载:Quartz-2.0Demo.rar
PS:
有很多人问Quartz启动后,关闭服务时无法及时关闭,必须杀进程才可以,解决方法时在调用Shutdown方法时传入参数false,即不等待任务运行结束立即关闭
scheduler.Shutdown(false);
相关文章推荐
- 使用普通Windows服务创建Quartz.Net服务项目
- 使用Sc.exe 创建windows 服务
- 使用.NET 创建Windows系统服务及安装完全教程
- [Solution] Microsoft Windows 服务(2) 使用Topshelf创建Windows服务
- 使用Topshelf创建Windows 服务
- 使用Topshelf 5步创建Windows 服务 z
- 使用C#创建WindowsService(Windows服务):定期执行Dos命令或Bat(批处理)文件
- 使用C# 创建windows 服务
- 使用Topshelf创建Windows 服务
- 使用Topshelf创建Windows 服务
- 使用Topshelf创建Windows 服务
- windows使用subinacl让普通用户具有服务管理权限
- 使用.NET创建Windows系统服务及安装完全教程(收藏)
- windows下使用sc创建服务 配置自动启动
- 使用Topshelf创建Windows 服务
- 使用Topshelf创建Windows 服务
- 使用Topshelf创建Windows 服务
- 使用Topshelf创建Windows 服务
- 使用C#创建windows 服务
- C#创建windows服务搭配定时器Timer使用实例