c#quartz触发_C# 通过 Quartz .NET 实现 schedule job 的处理

在实际项目的开发过程中,会有这样的功能需求:要求创建一些Job定时触发运行,比如进行一些数据的同步。

那么在 .Net Framework 中如何实现这个Timer Job的功能呢?

这里所讲的是借助第三方的组件 Quartz.Net 来实现(源码位置:https://github.com/quartznet/quartznet)

详细内容请看如下步骤:

1):首先在VS中创建一个Console Application,然后通过NuGet下载Quartz.Net组件并且引用到当前工程中。我们下载的是3.0版本,注:此版本与之前的2.0版本一定的区别。

2):继承 IJob 接口,实现 Excute 方法

public classEricSimpleJob : IJob

{publicTask Execute(IJobExecutionContext context)

{

Console.WriteLine("Hello Eric, Job executed.");returnTask.CompletedTask;

}

}public classEricAnotherSimpleJob : IJob

{publicTask Execute(IJobExecutionContext context)

{string filepath = @"C:\timertest.txt";if (!File.Exists(filepath))

{using (FileStream fs =File.Create(filepath)) { }

}using (StreamWriter sw = new StreamWriter(filepath, true))

{

sw.WriteLine(DateTime.Now.ToLongTimeString());

}returnTask.CompletedTask;

}

}

3):完成 IScheduler, IJobDetails 与 ITrigger之间的配置

static asyncTask TestAsyncJob()

{var props = newNameValueCollection

{

{"quartz.serializer.type", "binary"}

};

StdSchedulerFactory schedFact= newStdSchedulerFactory(props);

IScheduler sched= awaitschedFact.GetScheduler();awaitsched.Start();

IJobDetail job= JobBuilder.Create()

.WithIdentity("EricJob", "EricGroup")

.Build();

IJobDetail anotherjob= JobBuilder.Create()

.WithIdentity("EricAnotherJob", "EricGroup")

.Build();

ITrigger trigger=TriggerBuilder.Create()

.WithIdentity("EricTrigger", "EricGroup")

.WithSimpleSchedule(x=> x.WithIntervalInSeconds(5).RepeatForever())

.Build();

ITrigger anothertrigger=TriggerBuilder.Create()

.WithIdentity("EricAnotherTrigger", "EricGroup")

.WithSimpleSchedule(x=> x.WithIntervalInSeconds(5).RepeatForever())

.Build();awaitsched.ScheduleJob(job, trigger);awaitsched.ScheduleJob(anotherjob, anothertrigger);

}

4):在 Main 方法中完成调用, 由于是异步处理,因此这里用 Console.ReadKey() 完成对主线程的阻塞

static void Main(string[] args)

{

TestAsyncJob();

Console.ReadKey();

}

5):最终的运行结果为,两个Job使屏幕和文件不断输出字符串

更多信息请参考如下链接:

https://www.cnblogs.com/MingQiu/p/8568143.html

6):如果我们想将此注册为Windows Service,在对应Service启动之后自动处理对应Job,请参考如下链接:

http://www.cnblogs.com/mingmingruyuedlut/p/9033159.html

如果是2.0版本的Quartz.Net请参考如下链接:

https://www.quartz-scheduler.net/download.html

https://www.codeproject.com/Articles/860893/Scheduling-With-Quartz-Net

https://stackoverflow.com/questions/8821535/simple-working-example-of-quartz-net

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值