首页 技术 正文
技术 2022年11月12日
0 收藏 816 点赞 4,994 浏览 1832 个字

这个任务提醒工具是这样的,是每日定时执行,触发时间为 小时和分钟。每天早上来就可以把当天要做的添加到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的分享

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,991
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,505
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,349
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,134
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,766
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,844