先把全部源码上传,只是一个Demo,希望大家指点一下不足之处,见本文底部。

1.设置界面

2.详情页面

好了,现在慢慢叙述里面的一些方法。

3.实现拷贝的方法:

(1) public static void LeftCopyRight(object left,  object right)
        {
            var Properties = left.GetType().GetProperties();
            foreach (var Propertie in Properties)
            {
                //循环遍历属性
                if (Propertie.CanRead && Propertie.CanWrite)
                {
                    //进行属性拷贝
                    Propertie.SetValue(left, Propertie.GetValue(right, null), null);
                }
            }
        }

CopyHelper.LeftCopyRight(run, (this.DataContext as SetWindowViewModel).Run);

(2)用json

this.Run = JsonConvert.DeserializeObject<BaseRunner>(JsonConvert.SerializeObject(run));

(3)书本上标准的序列化方法,这里不做介绍。

4.读取保存在本地json格式的配置文件

try
            {
                if (!File.Exists(JsonPath))  // 判断是否已有相同文件
                {
                    FileStream fs = new FileStream(JsonPath, FileMode.Create, FileAccess.ReadWrite);
                    fs.Close();
                }

localRuns = JsonConvert.DeserializeObject<List<BaseRunner>>(File.ReadAllText(JsonPath));
            }
            catch (Exception ex)
            {
                log.Fatal(ex);
            }

保存配置文件

try
            {
                File.WriteAllText(JsonPath, JsonConvert.SerializeObject(TaskRuns.Select(p => p as BaseRunner)));
            }
            catch (Exception ex)
            {
                log.Fatal(ex);
            }

文件位置 public static string JsonPath = System.AppDomain.CurrentDomain.BaseDirectory + "JobTasks.json";

5.里面一共添加了3个任务,使用反射的方法,需要添加新的任务,只需要按照Jobs下HelloJob建立任务即可。

然后在系统启动的时候把你的任务添加上。这里特别希望有个朋友指点一下,如何能够不用手动加的方法,如何将反射直接用在泛型方法上,这样启动就可自动启动了。

TaskRuns = new List<IRun>();try{Assembly asm = Assembly.GetExecutingAssembly();Type[] types = asm.GetTypes();foreach (Type t in types){if (new ArrayList(t.GetInterfaces()).Contains(typeof(IJob))){IJob job = ObjectUtils.InstantiateType<IJob>(t);if (job != null){IRun run = null;if (job is HelloJob){run = new SimpleRunner<HelloJob>();}else if (job is HelloJob2){run = new SimpleRunner<HelloJob2>();}else if (job is HelloJob3){run = new SimpleRunner<HelloJob3>();}if (run != null){if (localRuns != null){var localRun = localRuns.Where(p => p.Name == run.Name).FirstOrDefault();if (localRun != null){CopyHelper.LeftCopyRight(run, localRun);                                        }}if (run.TriggerState != TriggerState.Normal || run.Mode == Mode.Hand){run.TriggerState = TriggerState.None;}run.CronSecondSet.Init();run.CronMinuteSet.Init();run.CronHourSet.Init();run.CronDaySet.Init();run.CronMonthSet.Init();run.CronWeekSet.Init();run.CronYearSet.Init();run.LogOut = this.LogOut;run.IsEdit = false;TaskRuns.Add(run);}}}}}catch (Exception ex){log.Fatal(ex);}

View Code

6.Cron与DateTime互转

public class CronHelper{public static string DateTime2Cron(DateTime date){return date.ToString("ss mm HH dd MM ? yyyy");}public static DateTime Cron2DateTime(string cron){return DateTime.ParseExact(cron, "ss mm HH dd MM ? yyyy", System.Globalization.CultureInfo.CurrentCulture);}public static DateTimeOffset DateTime2DateTimeOffset(DateTime datetime){return DateTime.SpecifyKind(datetime, DateTimeKind.Unspecified);}public static DateTime DateTimeOffset2DateTime(DateTimeOffset datetimeoffset){return datetimeoffset.DateTime;}}

CronHelper

最后,废话少说,上

链接:https://pan.baidu.com/s/1DpY8Tzwd1ggXVQkPH4bSlw
提取码:eon2

暂时永久有效,如果大家觉得不好,我将删除。

转载于:https://www.cnblogs.com/akwkevin/p/10423905.html

定时任务 Wpf.Quartz.Demo.3相关推荐

  1. 定时任务:Quartz 详解

    定时任务:Quartz 详解 文章目录 定时任务:Quartz 详解 1 Quartz是什么? 2 Quartz核心组成 3 Quartz核心模块理解 3.1 用工厂模式理解 Quartz 的设计机制 ...

  2. [JAVA]定时任务之-Quartz使用篇

    目录(?)[+] 定时任务之-Quartz使用篇 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用 ...

  3. 定时任务框架Quartz

    在Spring Boot 中要实现定时任务,有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用Quartz. 1.Scheduled 这种用法非常简 ...

  4. SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)

    最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...

  5. 美年旅游_套餐管理_定时任务组件Quartz

    文章目录 补充上前面没有的配置 先配置这些 2.4. 完善文件上传,Redis存储图片名称 美年旅游_套餐管理_定时任务组件Quartz 4.1. Quartz介绍 Quartz 入门案例 4.2. ...

  6. Quartz.net 定时任务矿建Demo

    1. 首先新建一个 window 控制台程序 2. 通过 nuget 的方式搜索并安装 Quartz . 安装的时候回引入3个程序集 Quartz.dll .Common.logging.dll . ...

  7. [BAT][JAVA]定时任务之-Quartz使用篇(通过这个配置可以知道在做Quartz的时候需要的jar文件/Cron表达式使用语法/常用Cron表达式)

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...

  8. Spring整合定时任务组件Quartz的简单使用

    Quartz介绍 Quartz是Job scheduling(作业调度)领域的一个开源项目,Quartz既可以单独使用也可以跟spring框 架整合使用,在实际开发中一般会使用后者.使用Quartz可 ...

  9. 定时任务 Scheduled quartz

    在项目应用中往往会用到任务定时器的功能,比如某某时间,或者多少多少秒然后执行某个骚操作等. spring 支持多种定时任务的实现,其中不乏自身提供的定时器. 接下来介绍一下使用 spring 的定时器 ...

  10. Quartz学习总结(2)——定时任务框架Quartz详解

    一.概述 Quartz是OpenSymphony开源组织的一个开源项目,定时任务框架,纯Java语言实现,最新版本为2.3.0. Quartz中用到的设计模式:Builder模式.Factory模式. ...

最新文章

  1. TCP_Wrappers 基于TCP的安全控制
  2. C++编程进阶8(最好不要实现类型转换运算符、单形参的构造函数与类型转换、临时对象与RVO)
  3. mysql 高性能引擎_《高性能MySQL》笔记1-MySQL架构与引擎
  4. 在Ubuntu下创建hadoop组和hadoop用户
  5. 用C#完成Swift远程推送通知
  6. 吴恩达深度学习4.4练习_Convolutional Neural Networks_Art Generation with Neural Style Transfer
  7. NAS、SAN和DAS的区别
  8. jsp循环输出表格_使用 ale.js 制作一个小而美的表格编辑器(1)
  9. 古诺(Cournot)竞争博弈模型 matlab仿真代码实现
  10. python 生意参谋_电商 Python 抓取 生意参谋-访客数据
  11. 机器学习(Machine Learning)大家与资源
  12. 简述a股实时股票行情接口原理?
  13. 关于后缀表达式的转换
  14. 外接显示器无法识别 win11
  15. Solidworks如何生成爆炸图
  16. MySQL 大量sleeping before entering InnoDB 故障诊断
  17. PHP基础——安装Apache软件
  18. 06 RGB和BGR颜色空间
  19. python教程10-列表的基本使用、列表增加元素、列表的改查删、列表遍历
  20. 贷前审批策略的6个搭建思路

热门文章

  1. 曼彻斯特编码_数据通信之数据编码
  2. 纯新手DSP编程--5.29--基础类DSP模块 API
  3. 中的工程图怎样才能做成正规图纸_新一代一拖二口罩机图纸详细设计三维模型带工程图...
  4. android交互xml代码,Unity 与Android的交互(Android studio)
  5. redis面试题简义
  6. Swift和R3联手了,跨境支付市场竞争升级
  7. 使用REST风格架构您需要知道的一些事
  8. Hbase单机安装及使用hbase shell进行简单操作
  9. @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别 .(转)
  10. 菜式介绍:风味黄泥烤鸡