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

c#Quartz简单使用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
public class ActionJob : IJob
    {
        public static Dictionary<string, Action<object>> ActionList { get; } = new Dictionary<string, Action<object>>();

        public Task Execute(IJobExecutionContext context)
        {
            return Task.Run(() =>
            {
                JobDataMap dataMap = context.JobDetail.JobDataMap;
                string name = dataMap.GetString("key");
                object value = dataMap.Get("value");
                if (ActionList.ContainsKey(name))
                {
                    ActionList[name]?.Invoke(value);
                }
            });
        }

        public static async void CreateJob(Action<object> action, string key, string value, ITrigger trigger)
        {
            var scheduler = await StdSchedulerFactory.GetDefaultScheduler();
            if (!scheduler.IsStarted)
            {
                await scheduler.Start();
            }
            ActionList.Add(key, action);
            IJobDetail job = JobBuilder.Create<ActionJob>()
                             .WithIdentity(new JobKey(key)) // name "myJob", group "group1"
                             .UsingJobData("key", key)
                             .UsingJobData("value", value)
                             .Build();

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

        public static void CreateJob(Action<object> action, string key, string value, int seconds)
        {
            // 创建触发器
            ITrigger trigger = TriggerBuilder.Create()
                                        .StartNow()                        //现在开始
                                        .WithSimpleSchedule(x => x         
                                        .WithIntervalInSeconds(seconds)
                                        .RepeatForever())           
                                        .Build();
            CreateJob(action, key, value, trigger);
        }

        public static async void Remove(string key)
        {
            var scheduler = await StdSchedulerFactory.GetDefaultScheduler();
            await scheduler.DeleteJob(new JobKey(key));
            ActionList.Remove(key);
        }
    }

创建一个一秒输出当前时间定时器:

 

ActionJob.CreateJob(value=> Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss}") , "writeTime", null, 1);

 

第三个参数支持传一个string,传了之后会在第一个参数中value返回

移除当前定时器

 

 ActionJob.Remove("writeTime");

 

原文:https://www.cnblogs.com/zisai/p/13560832.html

 


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
C#算法大全发布时间:2022-07-14
下一篇:
C#对XML的操作,利用DataSet对XML进行操作。发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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