C#中Quartz的使用

  • 安装 NuGet 包:在 Visual Studio 中打开项目,右键单击项目名称,选择“管理 NuGet 包”,搜索“Quartz”并安装。

  • 创建作业:创建一个实现了 IJob 接口的类,该接口包含一个 Execute 方法,该方法将在作业运行时调用。例如:

    public class MyJob : IJob
    {
        public Task Execute(IJobExecutionContext context)
        {
            Console.WriteLine("Hello, world!");
            return Task.CompletedTask;
        }
    }
  • 给Job传递数据:

    // 创建一个JobDataMap对象
    JobDataMap jobDataMap = new JobDataMap();
    
    // 向JobDataMap中添加参数
    jobDataMap.Add("param1", "Hello");
    jobDataMap.Add("param2", "World");
    
    // 创建一个JobDetail对象,设置JobDataMap
    JobDetail jobDetail = JobBuilder.Create<MyJob>()
        .UsingJobData(jobDataMap)
        .Build();
    
    // 在Job类中获取参数
    public class MyJob : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            JobDataMap jobDataMap = context.JobDetail.JobDataMap;
            string param1 = jobDataMap.GetString("param1");
            string param2 = jobDataMap.GetString("param2");
    
            Console.WriteLine("{0} {1}", param1, param2);
        }
    }

    注意:每次执行job时,都会创建一个新的job对象,并将JobDataMap中的数据传递给它。这意味着,即使您在job中存储了一些状态或数据,它们也不会在下一次执行job时保留。

  • 创建触发器:创建一个触发器来指定何时运行作业。例如,以下触发器将在每天上午 10 点运行作业:

 

ITrigger trigger = TriggerBuilder.Create()
    .WithIdentity("trigger1", "group1")
    .WithDailyTimeIntervalSchedule(
        x => x.OnEveryDay()
              .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(10, 0))
    )
    .Build();

    也可以不使用WithDailyTimeIntervalSchedule,使用WithCronSchedule,例如:下面是每天9点触发

.WithCronSchedule(cron) //"0 0 9 * * ?"

 

 

     这个表达式的含义是:

 

    • 第一字段:0,表示秒数为0。
    • 第二字段:0,表示分钟数为0。
    • 第三字段:14,表示小时数为14,即下午2点。
    • 第四字段:*,表示每天都匹配。
    • 第五字段:*,表示每月都匹配。
    • 第六字段:?,表示不指定星期几。
    • 第七字段:未使用。
  • 创建调度器:使用 StdSchedulerFactory 创建调度器,并将作业和触发器添加到调度器中:

ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
IScheduler scheduler = await schedulerFactory.GetScheduler();
IJobDetail job = JobBuilder.Create<MyJob>()
    .WithIdentity("job1", "group1")
.StartNow() .Build();
await scheduler.ScheduleJob(job, trigger);

   使用 StartNow() 方法来立即开始执行任务。这样,不管调度程序是在什么时候创建的,任务调度都会立即执行一次(不是job执行,任务调度执行是指如果我设了早上9点钟的触发器,现在是早上8点钟创建的任务调度,那今天的9点就不会执行,需要到明天的9点才执行;现在设了StartNow后,今天9点就会执行job了),并在之后按照调度规则继续执行。

  • 运行作业:调用 Start 方法启动调度器,使作业按照指定的触发器运行:

    await scheduler.Start();

    注意:这里只是启动调度器,并不会立刻执行作业,需要触发器触发才会执行。

 

原文链接:https://www.cnblogs.com/log9527blog/p/17318118.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中Quartz的使用 - Python技术站

(0)
上一篇 2023年4月22日
下一篇 2023年4月22日

相关文章

  • C#使用 NAudio 实现音频可视化的方法

    C#使用 NAudio 实现音频可视化的方法 NAudio 是一款C#语言开发的音频处理库,可以帮助我们完成各种音频处理任务,包括音频的播放、录制、混音等操作。在本文中,我们将介绍如何使用 NAudio 实现音频可视化。 第一步:引入 NAudio 库 首先,我们需要在项目中引入 NAudio 库。在Visual Studio中,可以通过NuGet添加依赖项…

    C# 2023年6月7日
    00
  • ASP.NET Core 3.x 并发限制的实现代码

    下面提供一份 ASP.NET Core 3.x 并发限制的实现代码完整攻略。 一、限制并发的原理 首先介绍一下限制并发的原理。在 ASP.NET Core 中,可以通过限制同时访问的线程数来限制并发。具体实现方式是使用 SemaphoreSlim 类,该类提供了限制线程访问的功能。 SemaphoreSlim 类具有两个重要的方法 WaitAsync 和 R…

    C# 2023年5月31日
    00
  • 快速插入大量数据的asp.net代码(Sqlserver)

    下面是一份关于如何快速插入大量数据的asp.net代码(Sqlserver)的攻略: 1. 批量插入数据的原理 快速插入大量数据的原理是通过一次插入多行数据来减少多个单行插入的开销。具体而言,就是使用SQL Server提供的Bulk Copy功能实现批量插入数据。 2. 使用Bulk Copy实现批量插入数据 首先,我们需要先创建一个DataTable对象…

    C# 2023年5月31日
    00
  • WCF如何绑定netTcpBinding寄宿到控制台应用程序详解

    WCF如何绑定netTcpBinding寄宿到控制台应用程序详解 WCF(Windows Communication Foundation)是一种用于构建分布式应用程序的框架。它提供了一种统一的编程模型,可以使用不同的传输协议和编码方式来实现跨平台的通信。其中,netTcpBinding是一种高性能的传输协议,可以在局域网内快速传输大量数据。在本文中,我们将…

    C# 2023年5月15日
    00
  • Unity shader实现消融效果

    以下是Unity shader实现消融效果的完整攻略,包含两条示例说明: 1.实现思路 要实现消融效果,可以通过以下步骤实现: 创建一个新的 shader ,命名为melting。 在 ShaderLab 中配置 SubShader 和 Pass。 在 CG 程序中编写顶点和片段着色器,实现消融效果。 2. ShaderLab 部分 首先,我们需要在 Sha…

    C# 2023年6月3日
    00
  • C#实现中文验证码的示例代码

    下面就为您详细讲解”C#实现中文验证码的示例代码”的完整攻略,其中包含两个示例说明。 1. 前置知识 在实现中文验证码之前,需要先了解以下知识: C#基础编程知识 图形绘制基础 验证码的概念和生成方式 中文字体库的使用 2. 实现过程 2.1 创建项目和添加引用 首先,我们需要创建一个控制台应用程序的项目,然后在该项目中添加System.Drawing和Sy…

    C# 2023年6月7日
    00
  • C#串口接收程序的实现

    C#串口接收程序的实现攻略 串口通信是一种常见的设备与计算机之间进行数据传输的方式。在C#中,我们可以使用SerialPort类来实现串口接收程序的实现。下面是实现串口接收程序的完整攻略: 1. 创建串口接收程序的项目 首先,我们需要创建一个新的C#项目。在Visual Studio中,可以通过选择“新建项目”并选择“控制台应用程序”来完成。在新建项目的过程…

    C# 2023年6月7日
    00
  • C#通过DataSet读写xml文件的方法

    下面是详细讲解C#通过DataSet读写XML文件的方法的完整攻略: 准备工作 在开始之前,需要使用C#项目创建好一个XML文件,并且设置好文件的格式和数据。 读取XML文件 创建DataSet对象,并读取XML文件 DataSet ds = new DataSet(); ds.ReadXml("文件路径及名称.xml"); 查找特定节点…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部