简单使用调度器
作者 : Jacky 发布于 2023-05-18 10:20:16 浏览 452 次
作业调度其实就是一个定时器,定时完成某件事,比如:每分钟执行一次,每小时执行一次,每天执行一次,第二周几执行,每月几号几点执行,间隔多少个小时执行一次等。

1. 定时只执行一次也就是多久后执行

var job = new XiaoFeng.Threading.Job
{
    Async = true,
    Name="作业名称",
    TimerType= XiaoFeng.Threading.TimerType.Once,
    StartTime= DateTime.Now.AddMinutes(5),
    SuccessCallBack = job =>
    {
        /*到时间执行任务*/
    }
};
job.Start();

当前作业为5 分钟后执行一次,然后就是销毁,作业从调度中移除。

2. 间隔执行

var job = new XiaoFeng.Threading.Job
{
    Async = true,
    Name = "作业名称",
    TimerType = XiaoFeng.Threading.TimerType.Interval,
    Period = 5000,
    StartTime = DateTime.Now.AddMinutes(5),
    SuccessCallBack = job =>
    {
        /*到时间执行任务*/
    }
};
job.Start();

当前作业为,5分钟后运行,然后每隔5分钟会再执行一次。

3. 每天定时执行一次

var job = new XiaoFeng.Threading.Job
{
    Async = true,
    Name = "作业名称",
    TimerType = XiaoFeng.Threading.TimerType.Day,
    Times = new List { new Times(2,0,0),new Times(4,0,0) },
    StartTime = DateTime.Now.AddMinutes(5),
    SuccessCallBack = job =>
    {
        /*到时间执行任务*/
    }
};
job.Start();

当前作业为,5分钟后运行,然后每天2点,4点各执行一次。

4. 每周几几点执行,每月几号几点执行

var job = new XiaoFeng.Threading.Job
{
    Async = true,
    Name = "作业名称",
    TimerType = XiaoFeng.Threading.TimerType.Week,
    Times = new List { new Times(10,12,13,week:1),new Times(11,12,13,week:1) },
    StartTime = DateTime.Now.AddMinutes(5),
    SuccessCallBack = job =>
    {
        /*到时间执行任务*/
    }
};
job.Start();

当前作业为,5分钟后运行,然后每周的周一10点12分13秒和11点12分13秒各执行一次。

大家问的最多的就是想在某个时候,想停止调度中的某个作业;

下面简单为大家介绍一下停止作业的方式

如下代码

var list1 = new List();
var list2 = new List();
var list3 = new List();
var job1 = new Job()
{
    Name="job1",
     TimerType= TimerType.Interval,
      Period=30*60*1000,
    SuccessCallBack = j =>
    {
        Console.WriteLine("执行");
    }
};
list1.Add(job1);
list2.Add(job1.ID);
list3.Add(job1.Name);

job1.Start();

/*
 * 第一种方法 通过job自己停止
 */
job1.Stop();
/*
 * 第二种方法 通过 作业ID或Name停止
 */
JobScheduler.Default.Remove(job1.ID);
JobScheduler.Default.Remove(job1.Name);

上边建了三个list 来存储我们已经开启的作业

通过我们作业的关键词来找出来是作业对象或作业的ID ,作业的名称

找到作业对象,就可以直接通过对象执行停止

找到作业ID或作业名称可以通过调度器提供的方法来停止当前作业。

所有评论(0)