首页 > 编程语言 >Quartz.Net来实现C#中的定时任务

Quartz.Net来实现C#中的定时任务

时间:2023-08-30 17:11:10浏览次数:43  
标签:触发器 Quartz C# await 调度 任务 Net

首先,你需要通过NuGet包管理器或手动下载并添加Quartz.Net库到你的项目中。

 
 using Quartz;
using Quartz.Impl;

public class MyJob : IJob
{
    public Task Execute(IJobExecutionContext context)
    {
        // 在这里编写你的任务逻辑
        Console.WriteLine("任务执行中...");
        return Task.CompletedTask;
    }
}

public class Program
{
    public static async Task Main(string[] args)
    {
        // 创建调度器
        ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
        IScheduler scheduler = await schedulerFactory.GetScheduler();

        // 启动调度器
        await scheduler.Start();

        // 创建一个作业
        IJobDetail job = JobBuilder.Create<MyJob>()
            .WithIdentity("myJob", "group1")
            .Build();

        // 创建一个触发器
        ITrigger trigger = TriggerBuilder.Create()
            .WithIdentity("myTrigger", "group1")
            .StartNow()
            .WithSimpleSchedule(x => x
                .WithIntervalInSeconds(10) // 每10秒执行一次
                .RepeatForever())
            .Build();

        // 将作业和触发器关联到调度器
        await scheduler.ScheduleJob(job, trigger);

        // 等待一段时间,让调度器执行任务
        await Task.Delay(TimeSpan.FromSeconds(60));

        // 停止调度器
        await scheduler.Shutdown();
    }
}

在上面的示例中,我们定义了一个名为MyJob的任务类,它实现了IJob接口。在Execute方法中,你可以编写你的任务逻辑。

然后,在Main方法中,我们创建了一个调度器并启动它。接着,我们使用JobBuilder创建了一个作业,并使用TriggerBuilder创建了一个触发器。这里的触发器使用了简单的重复计划,每10秒执行一次。

最后,我们将作业和触发器关联到调度器,并等待一段时间让调度器执行任务。最后,我们关闭调度器。

这只是一个简单的示例,Quartz.Net还支持更复杂的调度需求,比如指定特定的日期和时间执行任务,以及设置任务的优先级等。你可以通过查阅Quartz.Net的文档来了解更多详细信息和示例。

标签:触发器,Quartz,C#,await,调度,任务,Net
From: https://www.cnblogs.com/dywtofighting/p/17667751.html

相关文章

  • Install elasticsearch-head: – for Elasticsearch 5.x
    RunningasapluginofElasticsearchInstallelasticsearch-head:–forElasticsearch5.x:sitepluginsarenotsupported.Runelasticsearch-head asastandaloneserverRunningwithbuiltinserverenable cors byadding http.cors.enabled:true inelasticsearc......
  • Scrum敏捷开发工具:高效企业必备
    ​随着软件开发行业的不断发展和进步,Scrum敏捷开发工具逐渐成为了备受关注的话题。Scrum是一种灵活且高效的项目管理方法,旨在提高团队协作和交付效率,使团队能够更快地响应变化和需求。本文将深入探讨Scrum敏捷开发工具的基本概念、使用方法、优势以及实际应用案例。一、Scrum......
  • ReentrantLock的介绍及其用法
    Reentrantlock默认是非公平锁privatestaticReentrantLocklock=newReentrantLock();若想实现公平锁,只需在构造器的fair参数传入trueprivatestaticReentrantLocklock=newReentrantLock(true);公平锁会按照线程请求锁的顺序进行获取,遵循先到先得的原则。而非公平锁则......
  • Python获取cookie的方法
    方法一、通过接口获取         deftest_002():session=requests.session()get_url='https://Login/MDAccountLogin'data={"password":"jTkwfEnaQeb9u5A1Gx6h3CwsfEVcOWPCo/blACFl8FXFsWr","isC......
  • excel导出功能
    packagecom.infosec.ztpdp.policycenter.module.audit.controller;importjava.io.IOException;importjava.io.OutputStream;importjava.net.URLDecoder;importjava.text.SimpleDateFormat;importjava.util.HashMap;importjava.util.List;importjava.util.Map;......
  • node18 vue2启动报错 error:0308010C:digital envelope routines::unsupported
    出现原因貌似是因为是因为node17版本开始发布的OpenSSL3.0,而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。解决方法第一种方法降低node版本降低到17以下即可,如项目不能降低版本看后面的解决方式第二种方法设置NODE_OPTIONS环境变量......
  • gitlab删除project
      ......
  • python selenium报错ValueError: Timeout value connect was <...>, but it must be an
    最近学习爬虫,安装selenium,很简单地执行代码,但是一直报错。importtimeimportopenpyxlfromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeysfromselenium.webdriver.common.byimportByfromselenium.webdriver.chrome.serviceimportService......
  • JS逆向实战22——某政府采购网简单cookie反爬
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!目标网站网站:aHR0cDovL3d3dy55bmdwLmNvbS8=目标类似于这种进入前检查浏览器...如何跳转页面分析我......
  • linux centos7 开启tomcat不成功
    在bin文件夹下打开终端,输入./start.sh后报错权限不够解决方法:依旧在终端上输入chmod+x*.sh(网上说输入chmod+xstartup.sh也可以,但我没成功)输入ll可看到*.sh的文件都高亮此时再次输入./startup.sh即可成功 ......