duheng
2024-05-29 b4189107397fb4e2da2bd9343d0eb85d44918932
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
using Quartz;
 
namespace IStation.ChEr.WebApi;
 
/// <summary>
/// 预测计划任务辅助类
/// </summary>
public class PredictCronJobHelper : IJobHelper
{
    private const string _jobName = "PredictCronJob";
    private const string _jobGroup = "PredictCronJobGroup";
    private const string _triggerName = "PredictCronJobTriggr";
 
    private static IScheduler _sched;//调度器
 
    /// <summary>
    /// 开始任务
    /// </summary>
    public async Task StartJob()
    {
        if (_sched != null)
            return;
 
        // 1.创建scheduler的引用
        var fac = new Quartz.Impl.StdSchedulerFactory();
        _sched = await fac.GetScheduler();
 
        //2.启动 scheduler
        await _sched.Start();
 
        //3.创建任务
        var job = JobBuilder.Create<CalcWaterPredictJob>()
         .WithIdentity(_jobName, _jobGroup)
         .Build();
 
        //   4.创建Trigger
        var trigger = TriggerBuilder.Create()
        .WithIdentity(_triggerName, _jobGroup)
        .WithCronSchedule("0 43 0/1 * * ? ")//"0 32 0/1 * * ? "
        .Build();
 
        /*   //4.创建Trigger
           var trigger = TriggerBuilder.Create()
           .WithIdentity(_triggerName, _jobGroup)
           .WithSimpleSchedule(x => x.WithIntervalInSeconds(2)
           .RepeatForever().WithMisfireHandlingInstructionNextWithRemainingCount())
           .Build();
*/
        //5.加入调度管理器
        await _sched.ScheduleJob(job, trigger);
    }
 
    /// <summary>
    /// 取消任务
    /// </summary>
    public async Task CancelJob()
    {
        if (_sched == null)
            return;
        var triggerKey = new TriggerKey(_triggerName, _jobGroup);
        if (await _sched.CheckExists(triggerKey))
        {
            await _sched.UnscheduleJob(triggerKey);
        }
    }
}