Quartz.net2.2初体验

简介:Quartz.net是一个开源的作用调度框架,非常强大,能够通过简单的配置帮助我们定时具体的操作。相对于我们用的线程里面while(true)然后sleep来执行某个操作,应该算的上是高端,大气,上档次了。目前最新版本是2.2,新的版本里面有些方法名发生了变化,从之前的版本用过来的人应该会有体会.这里我使用最常用,也是最稳定的方式–Windows服务里面使用Quartz.net,并且使用配置的方式来设置触发器。

步骤:

1.定义使用的job:就是我们具体要执行的操作.

namespace Quartz.MyJobs
{
    public class HelloWorldJob : IJob
    {
        #region IJob 成员

        public void Execute(IJobExecutionContext context)
        {
            //LogHelper.LogHelper.Log("执行HelloWorld Job");
            String path = AppDomain.CurrentDomain.BaseDirectory + "Job\\";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            File.AppendAllText(path + "job.txt", DateTime.Now + "\n");
        }

        #endregion
    }
}

有了job,之后就在配置里面以Cron表达式的方式来设置Trigger和job配置节(quartz_jobs.xml)

 

还有有一个quartz.config配置文件,里面有这样一行:quartz.plugin.xml.fileNames = ~/quartz_jobs.xml(这里的文件对应我们上面配置文件夹)。

现在job和trigger已经定义好了,接下来我们在Windows服务里面声明一个调度器把两者结合起来就OK了。

namespace Quartz.WinService
{
    partial class MyQuartzService : ServiceBase
    {
        IScheduler sched = null;
        public MyQuartzService()
        {
            InitializeComponent();
            ISchedulerFactory factory = new StdSchedulerFactory();
            sched = factory.GetScheduler();
        }

        protected override void OnStart(string[] args)
        {
            sched.Start();
            LogHelper.LogHelper.Log("服务启动...");
        }

        protected override void OnStop()
        {
            sched.Shutdown();
            LogHelper.LogHelper.Log("服务停止");
        }
    }
}

到这里就结束了。如果你的项目里面需要定时执行某个操作,使用Quartz.net绝对是非常棒的选择。

关于Cron表达式的了解可以点击这里

作者:张雪飞
出处:https://zhangxuefei.site/p/54
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注