heyuntao
2023-05-04 fbd6a11a99051f425640bf352842f4a0ecaa7a4d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using CommonUtil;
using Quartz;
using Quartz.Impl;
using ScheduledTasks.Handle;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
using System.Threading.Tasks;
 
namespace ScheduledTasks
{
    public class Scheduler
    {
        private IScheduler scheduler;
 
        /// <summary>
        /// 创建调度任务的入口
        /// </summary>
        /// <returns></returns>
 
        public async Task Start()
        {
            await StartJob();
        }
 
        /// <summary>
        /// 创建调度任务的公共调用中心
        /// </summary>
        /// <returns></returns>
        public async Task StartJob()
        {
            //创建一个工厂
            NameValueCollection param = new NameValueCollection()
            {
                {  "testJob","test"}
            };
 
            StdSchedulerFactory factory = new StdSchedulerFactory(param);
            //创建一个调度器
            scheduler = await factory.GetScheduler();
            //开始调度器
            await scheduler.Start();
 
 
            //有赞和1688token更新
            string tokenupdate = ConfigUtil.GetValue<string>("job_tokenupdate");
            await CreateJob<TokenUpdateHandle>("token更新", "token更新", tokenupdate);
        }
 
 
        /// <summary>
        /// 创建运行的调度器
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="name"></param>
        /// <param name="group"></param>
        /// <param name="cronTime"></param>
        /// <returns></returns>
        public async Task CreateJob<T>(string name, string group, string cronTime) where T : IJob
        {
            //创建一个作业
            var job = JobBuilder.Create<T>()
                .WithIdentity("name" + name, "group" + group)
                .Build();
 
            //创建一个触发器
            var tigger = (ICronTrigger)TriggerBuilder.Create()
                .WithIdentity("name" + name, "group" + group)
                .StartNow()
                .WithCronSchedule(cronTime)
                .Build();
 
            //把作业和触发器放入调度器中
            await scheduler.ScheduleJob(job, tigger);
        }
    }
}