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

使用quartz.net 完成一个winform版的任务提醒工具的更多相关文章

  1. 用C#开发一个WinForm版的批量图片压缩工具

    我们在实际项目开发过程中,曾经遇到过一个需求,就是要开发一个对大量图片进行整理(删除掉一些不符合要求的图片).归类(根据格式进行分类,比如jpg格式.bmp格式等).压缩(因为有的图片很大很占空间,看 ...

  2. 用Python3、NetCore、Shell分别开发一个Ubuntu版的定时提醒(附NetCore跨平台两种发布方式)

    汇总系列:https://www.cnblogs.com/dunitian/p/4822808.html#ai Python3 与 C# 基础语法对比:https://www.cnblogs.com/ ...

  3. 实现一个简易版的vuex持久化工具

    背景 最近用uni-app开发小程序项目时,部分需要持久化的内容直接使用vue中的持久化插件貌似不太行,所以想着自己实现一下类似vuex-persistedstate插件的功能,想着功能不多,代码量应 ...

  4. C# Winform版批量压缩图片程序

    需求 上周,领导给我分配了一个需求:服务器上的图片文件非常大,每天要用掉两个G的大小的空间,要做一个自动压缩图片的工具处理这些大图片.领导的思路是这样的: 1)打开一个图片,看它的属性里面象素是多少, ...

  5. RDIFramework.NET V3.3 WinForm版角色授权管理新增角色对操作权限项、模块起止生效日期的设置

    在实际应用在我们可能会有这样的需求,某个操作权限项(按钮)或菜单在某个时间范围内可以让指定角色访问.此时通过我们的角色权限扩展设置就可以办到. 在我们框架V3.3 WinForm版全新增加了角色权限扩 ...

  6. 任务驱动,Winform VS WEB对比式学习.NET开发系列第一篇------身份证解析(不断更新的WEB版本及Winform版本源码)

    一 本系列培训随笔适用人群 1. 软件开发初学者 2. 有志于转向Web开发的Winform程序员 3. 想了解桌面应用开发的Web程序员 二 高效学习编程的办法 1 任务驱动方式学习软件开发 大部分 ...

  7. 任务驱动,对比式学习.NET开发系列之开篇------开源2个小框架(一个Winform框架,一个Web框架)

    一 源码位置 1. Winform框架 2. web框架 二 高效学习编程的办法 1 任务驱动方式学习软件开发 大部分人学习软件开发技术是通过看书,看视频,听老师上课的方式.这些方式有一个共同点即按知 ...

  8. .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”

    FileProvider构建了一个抽象文件系统,作为它的两个具体实现,PhysicalFileProvider和EmbeddedFileProvider则分别为我们构建了一个物理文件系统和程序集内嵌文 ...

  9. ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程

    从<ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求>我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但 ...

随机推荐

  1. HTTP常见状态码(200、301、302、404、500、502)详解

         概述 运维工作中,在应用部署的时候,通常遇到各种HTTP的状态码,我们比较常见的如:200.301.302.404.500.502 等,有必要整理一份常见状态码的文档,加深印象,方便回顾. ...

  2. PAT L2-020 功夫传人【BFS】

    一门武功能否传承久远并被发扬光大,是要看缘分的.一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱-- 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹.挖到 ...

  3. mybatis(一)常见ORM框架及JDBC操作工具类

      转载:https://www.cnblogs.com/wuzhenzhao/p/11075569.html 在Java 程序里面去连接数据库,最原始的办法是使用JDBC 的API.我们先来回顾一下 ...

  4. Emoji of github & twitter

    Emoji cheat sheet http://www.emoji-cheat-sheet.com/ https://github.com/xgqfrms/emoji-cheat-sheet.com ...

  5. JavaScript string repeat methods All In One

    JavaScript string repeat methods All In One There are many ways in the ES-Next ways repeat ES2015 / ...

  6. HTML5 Canvas 画图组件 All In One

    HTML5 Canvas 画图组件 All In One Canvas SVG Canvas + SVG refs https://www.infoq.cn/article/1BVg9VDSmqyHv ...

  7. how to share UI components

    how to share UI components The shared component cloud · Bit https://bit.dev/ A better way to build w ...

  8. chown -R & chmod 777 & chmod +x

    chown -R & chmod 777 & chmod +x https://linux.die.net/man/1/chown chown - change file owner ...

  9. toString()[0]

    toString()[0] https://prepack.io/ x = `A` //"A" x.toString()[0] //"A" x.toString ...

  10. Deno 1.0 & Node.js

    Deno 1.0 & Node.js A secure runtime for JavaScript and TypeScript. https://deno.land/v1 https:// ...