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

    之前参加某公司笔试,机试题目是大数相加,两大数是字符串形式,求和. 当时讨巧用的是BigDecimal类,但是发迷糊了,以为b1.add(b2)后,和就加到b1上了,结果一直输出不对. 其实应该是这样 ...

  2. msfconsole web后门

    一.PHP后门 在meterpreter中有一个名为PHP meterpreter的payload,利用这个可以成功反弹.步骤如下: 1. 使用msfvenom 创建一个webshell.php 2. ...

  3. Google Developer Days 2019 & GDD

    Google Developer Days 2019 2019 Google 开发者大会 GDD Google Developer Days https://events.google.cn/intl ...

  4. bash for mac

    bash for mac https://sourabhbajaj.com/mac-setup/iTerm/ https://sourabhbajaj.com/mac-setup/iTerm/zsh. ...

  5. CI / CD in Action

    CI / CD in Action Continuous Integration (CI) & Continuous Delivery (CD) https://github.com/mark ...

  6. taro swiper & scroll tabs

    taro swiper & scroll tabs https://taro-docs.jd.com/taro/docs/components/viewContainer/swiper.htm ...

  7. scrimba & interactive free online tutorials

    scrimba & interactive free online tutorials https://github.com/scrimba/community/blob/master/FAQ ...

  8. express+mongodb开发网站

    准备工作: 1安装git 进入官网  使用方法:使用git教程 2安装node.js 进入官网 3安装mongodb 进入官网 需要技术: 1.基础知识:html .css. js .jquery 2 ...

  9. sublime 使用过程中遇到的问题

    1.当我把鼠标放置在下图所示的class上几秒钟后,sublime就会在全局查找当前的class字符,这时sublime就会出现卡顿或无响应 解决方法: 点击preferences下的settings ...

  10. 链接服务器sql语句

     EXEC  sp_addlinkedserver      @server='sha',--被访问的服务器别名       @srvproduct='',      @provider='SQLOL ...