• 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供你学习!!

  • 相关阅读:
    很好用的DBHelper类
    .net连接SAP的几种方式
    使用API管理平台的优势
    ASP.NET 2.0中的登陆控件简介
    asp.net 1.1/ 2.0 中快速实现单点登陆
    ASP.NET 2.0 成员资格和角色管理授权
    SqlDataSource 调用带参数的存储过程
    Asp.net中基于Forms验证的角色验证授权
    解释:ASP.NET 2.0 中的窗体身份验证
    SQL JOIN 的用法
  • 原文地址:https://www.cnblogs.com/lxyang/p/12893844.html
Copyright © 2020-2023  润新知