zoukankan      html  css  js  c++  java
  • Quartz 计时器使用之 给主线程窗体控件赋值方法

    最近在写一个导入工具时用到了一个新的东西Quartz 计时器 ,timer有的Quartz 基本都有,所以用Quartz 来写了下代码,并记录。

    1、首先需要引用GuGet程序包,搜索' quartz ' ,下载安装到程序。

    2、直接上代码,创建job,trigger等方法

    job传参:  job.JobDataMap.Put("AutoImport", formInstance);   ,我这里'AutoImport' 是一个主窗体的实例

      // 1.创建scheduler的引用
                    ISchedulerFactory schedFact = new StdSchedulerFactory();
                    sched = await schedFact.GetScheduler();
                    //2.启动 scheduler
                    await sched.Start();
                    // 3.创建 job
                    IJobDetail job = JobBuilder.Create<DoWork>()
                            .WithIdentity("job5", "group5")
                            .Build();
                    job.JobDataMap.Put("AutoImport", formInstance);    //job传参
    
                    //   4.创建 trigger
                    ITrigger trigger = TriggerBuilder.Create()
                          .WithIdentity("trigger5", "group5")
                          .StartAt(DateTime.Parse(startime))
                          .WithSimpleSchedule(x => x
                            .WithIntervalInMinutes(int.Parse(jiange))     //下次执行时间的 时间
                            .RepeatForever())               //永远执行
                            .Build();
    
                    // 5.使用trigger规划执行任务job
                    await sched.ScheduleJob(job, trigger);

    3、执行job里的方法,获取job传来的主窗体实例,通过实例修改控件的值。

       public class DoWork : IJob
            {
                public virtual async Task Execute(IJobExecutionContext context)
                {
                    AutoImport au = (AutoImport)context.JobDetail.JobDataMap.Get("AutoImport");  //获取job传来的参数
              //修改主窗体中控件的值
             au.datetime_startime.Value = DateTime.Parse(nexttime);   
             au.lab_msg.Text = "等待下次启动时间..." + nexttime;
              await Task.CompletedTask;
           }
        }

    这样就解决了修改主窗体控件值的问题了。

    有关 Quartz 的其他方法,兄弟儿们可以自行百度啦,大把大把的资料demo供你学习!!

  • 相关阅读:
    一般处理程序(ashx)
    添加水印
    一般处理程序(ashx)的增删改查
    ASP.NET简介
    泛型反射
    委托事件
    词法分析器作业
    代理模式
    python 之面向对象的三大特性
    python之封装
  • 原文地址:https://www.cnblogs.com/lxyang/p/12893844.html
Copyright © 2011-2022 走看看