zoukankan      html  css  js  c++  java
  • 使用quartz.net 完成一个winform版的任务提醒工具

    这个任务提醒工具是这样的,是每日定时执行,触发时间为 小时和分钟。每天早上来就可以把当天要做的添加到datagridview中,只记录了标题和内容和时间。双击dgv就查看内容。

    如果每天计划重复,也可已保存计划,使用json序列化保存,然后加载任务的时候,选择文件加载,比较任务的时间如果小于当前的年月日,就把年月日替换为当前的,小时和分钟时间保留。

    点击了执行任务之后,就用quartz.net的api,支持多个任务提醒。

    删除任务也会把计划里的job删除掉的。

    写这个也是突发奇想,也算是小小的了解了一下定时任务的用法了。

    这个定时任务 有几个对象比较重要:Schedule、IJob、 Triggler。

    IJob就是你要执行的任务,里面有个方法,用来执行任务的,这个方法有个参数,任务上下文,可以把需要执行的数据通过这个上下文对象传递的执行方法里来执行。

    触发器就是定义任务在什么时候,任务的执行频次 的数据,这个任务和触发器是要关联起来,统一交给 schedule管理。

    详细的,等我需要深入了解的时候在去学吧。

    执行的代码:

    隐藏

    1.    IDictionary<IJobDetail, Quartz.Collection.ISet<ITrigger>> jobAndTriger = new Dictionary<IJobDetail, Quartz.Collection.ISet<ITrigger>>();
    2.  
    3.  
    4.    foreach (var p in listP)
    5.    {
    6.        var name = p.Ptime.ToString("yyyyMMddHHmmssff");
    7.        int hour = p.Ptime.Hour;
    8.        int m = p.Ptime.Minute;
    9.  
    10.        var job = JobBuilder.Create<Plan>()
    11.       .WithIdentity(name, "group1") // name "myJob", group "group1"
    12.       .Build();
    13.        job.JobDataMap.Add(name, p);
    14.  
    15.        ITrigger t = TriggerBuilder.Create()
    16. .WithIdentity("myTrigger"+ name)
    17. .ForJob(name)
    18. .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(hour,m)) // execute job daily at 9:30
    19. .ModifiedByCalendar("PlanDay") // but not on holidays
    20. .Build();
    21.  
    22.        Quartz.Collection.ISet<ITrigger> set =new Quartz.Collection.HashSet<ITrigger>();
    23.        set.Add(t);
    24.        jobAndTriger.Add(job, set);
    25.    }

    窗体之间数据传递数据,用了事件。

    隐藏

    1. public class Plan:IJob
    2.     {
    3.         public DateTime Ptime { get; set; }
    4.  
    5.         public string PTitle { get; set; }
    6.         public string pDetail { get; set; }
    7.         public bool PIsFinish { get; set; }
    8.  
    9.        public event Action<Plan> action;
    10.  
    11.         public void Execute(IJobExecutionContext context)
    12.         {
    13.             var val = context.JobDetail.JobDataMap.Values;
    14.             foreach (var item in val)
    15.             {
    16.                 ((Plan)item).action?.Invoke((Plan)item);
    17.             }
    18.  
    19.         }
    20.     }

    如果感兴趣可以下载源码:

    链接:https://pan.baidu.com/s/1y1ijav_7HfrjQXSu57DtCQ

    提取码:1234

    复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V3的分享

  • 相关阅读:
    Java基础知识(一)环境变量的设置、变量与常量、自动类型转换、自增长、赋值运算符
    ModelState
    DOM
    正则表达式常见形式
    通过JS设置一个元素的文本
    JS(三) 原型对象与原型链
    JS(二)call方法和apply方法
    第四周学习进度表
    敏捷开发方法综述
    数组02
  • 原文地址:https://www.cnblogs.com/HelloQLQ/p/14534466.html
Copyright © 2011-2022 走看看