标签:int tps 注解 ram 方式 sys wait run reading
作为一个优秀的开源调度框架,Quartz 具有以下特点:
另外,作为 Spring 默认的调度框架,Quartz 很容易与 Spring 集成实现灵活可配置的调度功能。
quartz调度核心元素:
我这里简单记录使用过程及代码:
1:首先引用Quartz组件
2:using Quartz;using Quartz.Impl;
注:在本地新建一个控制台项目,将以下代码copy过去即可用,只需要重写Execute方法即可。Quartz3.0及以上的版本是采用的异步,3.0以下的版本没有采用异步,使用方法是一样的
主函数入口文件:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using log4net; using Quartz.Impl; namespace Quartz { class Program { private static readonly ILog _log = LogManager.GetLogger(typeof(Program)); private static readonly string tiggerName = "TestJobTrigger"; private static readonly string gropName = "TestJobTriggerGrop"; private static readonly string jobName = "TestJob"; //从工厂中获取一个调度器实例化 private static IScheduler scheduler = null; static void Main(string[] args) { Console.WriteLine("开始任务...."); _log.Debug("开始任务...."); Start(); } private static async void Start() { //从工厂中获取一个调度器实例化 scheduler = await StdSchedulerFactory.GetDefaultScheduler(); await scheduler.Start(); //创建一个作业 IJobDetail job1 = JobBuilder.Create<HelloJob>() .WithIdentity(jobName, gropName) .UsingJobData("key", "value")// 传递参数 在Execute方法中获取(以什么类型值传入,取值就用相应的类型方法取值) .Build(); // 创建触发器 ITrigger trigger1 = TriggerBuilder.Create() .WithIdentity(tiggerName, gropName) .StartNow() //现在开始 .WithSimpleSchedule(x => x //触发时间,10秒一次。 .WithIntervalInSeconds(10) .RepeatForever()) //不间断重复执行 .Build(); await scheduler.ScheduleJob(job1, trigger1); //把作业,触发器加入调度器。 Console.ReadKey(); // 清除任务和触发器 // ClearJobTrigger(); } /// <summary> /// 清除任务和触发器 /// </summary> private static void ClearJobTrigger() { TriggerKey triggerKey = new TriggerKey(tiggerName, gropName); JobKey jobKey = new JobKey(jobName, gropName); if (scheduler != null) { scheduler.PauseTrigger(triggerKey); scheduler.UnscheduleJob(triggerKey); scheduler.DeleteJob(jobKey); scheduler.Shutdown();// 关闭 } } } }
实现IJob 接口的任务文件
using System; using System.Threading.Tasks; using log4net; namespace Quartz { public class HelloJob : IJob { private readonly ILog _log = LogManager.GetLogger(typeof(HelloJob)); public async Task Execute(IJobExecutionContext context) { JobDataMap dataMap = context.JobDetail.JobDataMap; string k = dataMap.GetString("key");//获取参数(可根据传递的类型使用GetInt、GetFloat、GetString.....) _log.Debug("run TestJob debug"); _log.Error("run TestJob error"); _log.Info("run TestJob info"); // 在这里处理你的任务 string dt = DateTime.Now.ToUniversalTime().ToString(); Console.WriteLine(dt); } } }
源码下载地址:https://download.csdn.net/upload/11091082
标签:int tps 注解 ram 方式 sys wait run reading
原文地址:https://www.cnblogs.com/louby/p/10660428.html