- 首页在项目中安装Quartz的Nuget包
-
新建一个任务, 也可以称为作业
public class MyJob : IJob { private int _Count = 0; public MyJob() { this._Count = new Random().Next(100, 999); Console.WriteLine("_count = " +this._Count); } public async Task Execute(IJobExecutionContext context) { await Task.Run(()=> { try { Console.WriteLine("MyJob 正在执行 线程id= "+Thread.CurrentThread.ManagedThreadId); Console.WriteLine("MyJob 正在执行 线程id= "+Thread.CurrentThread.ManagedThreadId); Console.WriteLine("MyJob 正在执行 线程id= "+Thread.CurrentThread.ManagedThreadId); Console.WriteLine("MyJob 正在执行 线程id= "+Thread.CurrentThread.ManagedThreadId); Console.WriteLine("MyJob 正在执行 线程id= "+Thread.CurrentThread.ManagedThreadId); Console.WriteLine("MyJob 正在执行 线程id= "+Thread.CurrentThread.ManagedThreadId); Console.WriteLine("MyJob 正在执行 线程id= "+Thread.CurrentThread.ManagedThreadId); Logger log = new Logger(typeof(MyJob)); log.Info("MyJob 正在执行 线程id = "+Thread.CurrentThread.ManagedThreadId); JobDataMap data= context.JobDetail.JobDataMap; //获取参数 // Console.WriteLine($"JobDetail :{data1.GetString("aaa1")}"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }); } }
- 把任务和一个触发器关联起来
public class DispatcherManager { public async static Task Init() { StdSchedulerFactory factory = new StdSchedulerFactory(); IScheduler scheduler = await factory.GetScheduler(); await scheduler.Start(); //创建作业 IJobDetail jobdetail = JobBuilder.Create<MyJob>() .WithIdentity("testjob", "group1")//起名称 .WithDescription("this is testjob") .Build(); //创建触发器 ITrigger trigger = TriggerBuilder.Create() .WithIdentity("testjob", "group1")//group1必须保持一致 //.StartAt(DateTime.Now.AddSeconds(2))//那个时间启动 .StartNow() //这个是马上启动 .WithCronSchedule("5/10 * * * * ?")//时间规则 .WithDescription("this is testjob`s trigger") .Build(); //异步执行 await scheduler.ScheduleJob(jobdetail,trigger); //Console.WriteLine("作业完成"); } }
- 调用执行
static void Main(string[] args) { try { DispatcherManager.Init().GetAwaiter().GetResult(); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read(); }
- 新建一个window 服务项目
- 在service中调用Init();
- 设置服务名称
-
安装与卸载服务: 找到自己的项目路径 下 bindebug 下的xxxService.exe文件
管理员身份打开cmd //安装服务 C:WindowsMicrosoft.NETFrameworkv4.0.30319InstallUtil "自己项目路径" est.WindowsService.exe //卸载服务 C:WindowsMicrosoft.NETFrameworkv4.0.30319InstallUtil /u "自己项目路径" est.WindowsService.exe
- 现在这个服务就可以在系统服务中看到了,启动它, 就会定时执行你写好的任务了。是不是很简单呢??