• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#Winform使用Quartz

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.添加引用,我这里哟那的是3.0.7版本:

 

2.直接上代码:

private static readonly string tiggerName = "TestJobTrigger";
        private static readonly string gropName = "TestJobTriggerGrop";
        private static readonly string jobName = "TestJob";

        private static readonly string tiggerName1 = "MicrovuJobTrigger";
        private static readonly string gropName1 = "MicrovuJobTriggerGrop";
        private static readonly string jobName1 = "MicrovuJob";
        //从工厂中获取一个调度器实例化
        private static IScheduler scheduler = null;
        private void button1_Click(object sender, EventArgs e)
        {
            Console.WriteLine("开始任务....");
            if (textBox1.Text!="")
            {
                TestJobStart();
            }
            else
            {
                MicrovuJobStart();
            }
            

        }
        private static async void TestJobStart()
        {
            //从工厂中获取一个调度器实例化
            scheduler = await StdSchedulerFactory.GetDefaultScheduler();
            await scheduler.Start();


            //创建一个作业
            IJobDetail job1 = JobBuilder.Create<TestJob>()
             .WithIdentity(jobName, gropName)
             .UsingJobData("key", "value")// 传递参数 在Execute方法中获取(以什么类型值传入,取值就用相应的类型方法取值)
             .UsingJobData("key1", "value1")
             .Build();

            // 创建触发器
            ITrigger trigger1 = TriggerBuilder.Create()
                                        .WithIdentity(tiggerName, gropName)
                                        .StartNow()                        //现在开始
                                        .WithSimpleSchedule(x => x         //触发时间,10秒一次。
                                            .WithIntervalInSeconds(5)
                                            .RepeatForever())              //不间断重复执行
                                        .Build();


            await scheduler.ScheduleJob(job1, trigger1);      //把作业,触发器加入调度器。

            

            // 清除任务和触发器
            //ClearJobTrigger();
        }

        private static async void MicrovuJobStart()
        {
            //从工厂中获取一个调度器实例化
            scheduler = await StdSchedulerFactory.GetDefaultScheduler();
            await scheduler.Start();


            //创建一个作业
            IJobDetail job1 = JobBuilder.Create<MicrovuJob>()
             .WithIdentity(jobName1, gropName1)
             .UsingJobData("key", "MicrovuJob")// 传递参数 在Execute方法中获取(以什么类型值传入,取值就用相应的类型方法取值)
             .UsingJobData("key1", "MicrovuJob1")
             .Build();

            // 创建触发器
            ITrigger trigger1 = TriggerBuilder.Create()
                                        .WithIdentity(tiggerName1, gropName1)
                                        .StartNow()                        //现在开始
                                        .WithSimpleSchedule(x => x         //触发时间,10秒一次。
                                            .WithIntervalInSeconds(10)
                                            .RepeatForever())              //不间断重复执行
                                        .Build();


            await scheduler.ScheduleJob(job1, trigger1);      //把作业,触发器加入调度器。



            // 清除任务和触发器
            //ClearJobTrigger();
        }

        /// <summary>
        /// 清除任务和触发器
        /// </summary>
        private static void ClearJobTrigger()
        {
            TriggerKey triggerKey = new TriggerKey(tiggerName, gropName);
            JobKey jobKey = new JobKey(jobName, gropName);
            if (scheduler != null)
            {
                scheduler.PauseTrigger(triggerKey);
                scheduler.UnscheduleJob(triggerKey);
                scheduler.DeleteJob(jobKey);
                scheduler.Shutdown();// 关闭
            }

        }

3.具体的Job,要执行的工作写在这里:

public class TestJob : IJob
    {

        /// <summary>
        /// 测试作业
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public Task Execute(IJobExecutionContext context)
        {
            return Task.Run(() => {
                
                JobDataMap dataMap = context.JobDetail.JobDataMap;
                string k = dataMap.GetString("key");//获取参数(可根据传递的类型使用GetInt、GetFloat、GetString.....)
                string k1 = dataMap.GetString("key1");


            });

        }
    }
    
    public class MicrovuJob : IJob
    {
        
        
        /// <summary>
        /// 测试作业
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public Task Execute(IJobExecutionContext context)
        {
            return Task.Run(() => {
                
                JobDataMap dataMap = context.JobDetail.JobDataMap;
                string k = dataMap.GetString("key");//获取参数(可根据传递的类型使用GetInt、GetFloat、GetString.....)
                string k1 = dataMap.GetString("key1");
                
                
            });

        }
    }

4.运行就能看到效果

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
RedHat7.4下Oracle19cRAC部署发布时间:2022-07-13
下一篇:
模板与c++11--右值引用发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap