C#+VS2022+Quartz.NET 3.6.2 自动任务作业调度框架测试
作者:C/S框架网|www.csframewo  发布日期:2023/03/28 17:33:07
  C#+VS2022+Quartz.NET 3.6.2 自动任务作业调度框架测试

C#+VS2022+Quartz.NET 3.6.2 自动任务作业调度框架测试

Quartz.NET简介

Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。


测试环境

VS2022, C#
Console控制台
.NET7


测试结果


贴图图片-quartz.net


C#源码


C# Code:

using CSFramework.QuartZ;

Console.WriteLine(
"/************************************************/");
Console.WriteLine(
"QuartZ.NET测试程序");
Console.WriteLine(
"by www.csframework.com C/S框架网");
Console.WriteLine(
"/************************************************/");

//运行测试程序
TestQuartz.Run();

//注意:这里使用ReadLine方法,否则控制台没有输出任何信息,以为程序执行失败!
Console.ReadLine();


//来源:C/S框架网 | www.csframework.com | QQ:23404761




C# Code:

/// <summary>
/// www.csframework.com,测试QuartZ.NET
/// </summary>
public class TestQuartz
{
  
/// <summary>
  
/// 运行测试程序
  
/// </summary>
  
public static async void Run()
  {
    
//1.调度工厂//创建任务调度器
    
StdSchedulerFactory factory = new StdSchedulerFactory();
    IScheduler scheduler
= await factory.GetScheduler();
    
    
//2.启动任务调度器
    
await scheduler.Start();
    
    
//3.创建一个触发条件(配置任务的参数),每3秒执行一次任务,永不停止。
    
ITrigger trigger = TriggerBuilder.Create()
    .WithSimpleSchedule(x
=> { x.WithIntervalInSeconds(3).RepeatForever(); })
    .Build();
    
    
//4.创建一个任务
    
IJobDetail job = JobBuilder.Create<TestJob>()
    .WithIdentity(
"job", "group")
    .Build();
    
    
//将创建的任务和触发器条件添加到创建的任务调度器当中
    
await scheduler.ScheduleJob(job, trigger);
  }
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761






C# Code:


[DisallowConcurrentExecution]
public class TestJob : IJob
{
  
  
private static int _Count = 0;
  
private static object _lock = new object();
  
  [MethodImpl(MethodImplOptions.Synchronized)]
  
public virtual Task Execute(IJobExecutionContext context)
  {
    
lock (_lock)
    {
      _Count++;
    }
    
    Console.WriteLine($
"正在执行第{_Count}次任务...");
    Console.Out.WriteLineAsync($
"执行Job,时间:{DateTime.Now}");
    Console.WriteLine(
"--------------------------------------");
    
    
return Task.CompletedTask;
  }
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761





C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇