首页 > 编程语言 >>.NET Core|--Quartz.Net|--控制台应用程序

>.NET Core|--Quartz.Net|--控制台应用程序

时间:2023-07-25 19:13:21浏览次数:42  
标签:Core Quartz Console -- await Test scheduler var

前言

#Visual Studio 版本
Microsoft Visual Studio Professional 2022 (64 位)

#Quartz.Net 版本
Quartz.Net 3.6.3

#C#语言版本 ( 别小看这个, 否则我下面的代码在你那里很可能跑不起来 )
10.0

安装Quartz.Net

我是直接通过Nuget包管理器安装的

其它安装方式, 也可以使用命令安装

Install-Package Quartz -Version 3.6.3

添加一个"IJob"的实现类

namespace Test.Job
{
    internal class TestQuarztJob : IJob
    {
        public Task Execute(IJobExecutionContext context)
        {
            Console.WriteLine(DateTime.Now);
            return Task.CompletedTask;
        }
    }
}

启动项

using Quartz.Impl;
using Quartz;
using Test.Job;


//这里是使用顶级域名( 注意C#预览版本 )
/*
需要配置语言版本 > 10.0 
例如 : 我这里的配置是 "<LangVersion>10.0</LangVersion>"
*/
await MainAsync();


static async Task MainAsync()
{
    var schedulerFactory = new StdSchedulerFactory();
    var scheduler = await schedulerFactory.GetScheduler();
    await scheduler.Start();
    Console.WriteLine($"任务调度器已启动");

    //创建作业和触发器
    var jobDetail = JobBuilder.Create<TileQuarztJob>().Build();

    var trigger = TriggerBuilder
        .Create()
        .WithCronSchedule("0/10 * * * * ?")
        .Build();

    //添加调度
    await scheduler.ScheduleJob(jobDetail, trigger);

    #region 我这里也遇到坑了...

    //不加这句代码"Console.ReadKey();", 会直接退出进程
    /*
     E:\Code\Test.Job\bin\Debug\net7.0\Test.Job.exe (进程 11124121918000000)已退出,代码为 0。
    要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
    按任意键关闭此窗口. . .
     */
    Console.ReadKey();

    #endregion
    await scheduler.Shutdown();
}

问题1.启动相关问题

using Quartz.Impl;
using Quartz;

namespace Test
{
    internal class Program
    {
        static void Main(string[] args)
        {
			//如何启动???
        }

        static async Task MainAsync()
        {
            var schedulerFactory = new StdSchedulerFactory();
            var scheduler = schedulerFactory.GetScheduler().Result;
            await scheduler.Start();
            Console.WriteLine($"任务调度器已启动");

            //创建作业和触发器
            var jobDetail = JobBuilder.Create<TileQuarztJob>().Build();

            var trigger = TriggerBuilder
                .Create()
                .WithCronSchedule("0 0/1 * * * ?")
                .Build();

            //添加调度
            await scheduler.ScheduleJob(jobDetail, trigger);
            Console.WriteLine("Hello, World!");
        }
    }
}

#解决方案 -- 启动程序那里, 我修改为顶级域名,

await MainAsync();

static async Task MainAsync()
{
//TODO : 
}
#并且要记得加上"Console.ReadKey();"

尾言


一个控制台程序也不简单啊, 也遇到坑了...

程序启动直接跑异步没搞过, 
忘了"Console.ReadKey();"...

惭愧惭愧...

标签:Core,Quartz,Console,--,await,Test,scheduler,var
From: https://www.cnblogs.com/love-zf/p/17580730.html

相关文章

  • 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v9.0版已发布
    关于MobileIMSDKMobileIMSDK是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、标准Java平台,服务端基于Netty编写。工程开源地址是:1)Gitee码云地址:https://gitee.com/jackjiang/Mobi......
  • 记一次 MDK 开发 STM32WB15 时遇到的玄学BUG
    使用STM32WB15CCU6开发BLE应用调试自建的工程时,莫名报错Jlink和ST-LINK/V2都是一样的结果于是开始测试例程,开始也是正常,但是找不到自建工程的问题,开始对比代码,逐步替换然而并没有效果......
  • 集合框架
    集合框架集合的概念概念:对象的容器,实现对对象常用的操作,类似数组功能和数组的区别:数组长度固定,集合长度不固定数组可以存储基本类型和引用类型,集合只能存储引用类型Collection接口Collection父接口特点:代表一组任意类型的对象,无序.无下标.不能重复方法:boole......
  • 前端多次调用1个接口, 要最后一次请求的数据
    假设你要进行多次调用一个名为`getData()`的接口,并且你只关心最后一次请求的数据。你可以使用以下示例代码来实现:1letlastRequestId=0;//记录最后一次请求的ID2letlastResponse=null;//记录最后一次请求的响应数据34asyncfunctiongetData(){5const......
  • 解决端口占用问题
    根据端口号,查看进程ID,杀死进程,来解决端口占用问题 #Windows//查询pid,命令:netstat-ano|findstr"端口号"netstat-ano|findstr"38088"//杀死进程,命令:taskkill/pid进程id-ftaskkill/pid8932-f#linux//查询pid,命令:lsof-i:端口号......
  • quartz.net 配置UseClustering
    Quartz.NET配置UseClustering概述在开始之前,我们需要明确一些概念。Quartz.NET是一个强大且灵活的开源任务调度库,它可以帮助我们在.NET应用程序中实现各种定时任务。而UseClustering则是Quartz.NET提供的一项功能,用于在多个节点之间分配和处理任务。本文将教你如何通过......
  • quartz.net core
    如何使用Quartz.NetCore介绍Quartz.NetCore是一个开源的任务调度库,可以帮助开发者实现定时任务的调度和执行。本文将指导你如何使用Quartz.NetCore。首先,让我们看一下整个实现过程的流程图。实现步骤下面是使用Quartz.NetCore实现定时任务的步骤:步骤描述步......
  • 不同起点转角相遇,从抖音和小红书看「社区产品」宿命 | 融云观察
    作为社交产品全球热点,Threads偷袭Twitter以及由此升级的马斯克和扎克伯格约架给全球用户上演了一出好戏。关注【融云全球互联网通信云】了解更多别打啦~马斯克直接在新闻下面回复“竞争可以,作弊不行”。不过,现实可能是另一个故事,作弊行不行得通,要看用户买不买账。“复刻”这招对......
  • qt 调用JAVA
    Qt调用Java的流程要实现Qt调用Java,需要经过以下步骤:步骤描述1准备Java类2在Qt中配置Java环境3创建Java对象4调用Java方法下面将详细介绍每一步需要做什么,并给出相应的代码示例。步骤一:准备Java类首先,我们需要编写一个Java类,其中包含我们想要Qt调用的......
  • 手持终端方案_三防手持终端设备_智能手持终端定制方案商
    多功能手持终端是一种非常实用的移动设备,具备多项功能并且具有防护特性。它采用了NFC/RFID读写技术,能够快速地识别和传输数据。此外,它还配备了指纹识别模块和1D/2D条码扫描模块,并具备防水、防尘、抗摔、耐高低温等特性。快速识别和传输数据的多功能三防手持终端采用了NFC/R......