You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GeneXus项目中使用Quartz.NET实现定时任务?

在GeneXus项目中集成Quartz.NET实现定时任务步骤
  • 解压Quartz.NET压缩包
    找到你下载的Quartz.NET压缩包,解压到本地任意目录(比如D:\QuartzNET)。解压后根据你GeneXus项目使用的.NET框架版本,找到对应子文件夹(比如用.NET Framework 4.8就找net48目录),里面的Quartz.dll、Quartz.Core.dll、Quartz.Impl.dll是核心依赖文件。

  • 在GeneXus项目中添加程序集引用
    打开你的GeneXus项目,右键点击项目名称,选择「添加引用」。在弹出的窗口切换到「浏览」标签,定位到刚才解压的目录,选中核心的Quartz程序集,点击「确定」完成引用。如果后续运行提示缺少其他依赖,再把解压包lib目录下对应的依赖dll也加上引用。

  • 编写定时任务逻辑类
    在项目里新建一个类(比如叫MyScheduledJob),实现Quartz的IJob接口,重写Execute方法,把你的任务逻辑写在这里:

using Quartz;
using System;

public class MyScheduledJob : IJob
{
    public void Execute(IJobExecutionContext context)
    {
        // 这里写具体任务逻辑,比如调用GeneXus业务对象、执行数据库操作
        Console.WriteLine($"定时任务执行:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
    }
}
  • 配置并启动Quartz调度器
    找到GeneXus项目的启动入口(Web项目找Global.asax,桌面项目找Program.cs),添加调度器初始化代码:
using Quartz;
using Quartz.Impl;

// 初始化调度器
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
IScheduler scheduler = schedulerFactory.GetScheduler().Result;
scheduler.Start().Wait();

// 定义任务详情
IJobDetail job = JobBuilder.Create<MyScheduledJob>()
    .WithIdentity("myJob", "jobGroup1")
    .Build();

// 定义触发器(示例:每隔5分钟执行一次,立即启动)
ITrigger trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "triggerGroup1")
    .StartNow()
    .WithSimpleSchedule(schedule =>
        schedule.WithIntervalInMinutes(5).RepeatForever())
    .Build();

// 绑定任务和触发器到调度器
scheduler.ScheduleJob(job, trigger).Wait();
  • 处理项目生命周期(Web项目必做)
    如果是Web项目,要在Application_End方法里关闭调度器,避免资源泄漏:
protected void Application_End(object sender, EventArgs e)
{
    scheduler.Shutdown().Wait();
}
  • 测试验证
    运行GeneXus项目,通过控制台输出或日志查看,确认定时任务是否按设定的时间执行。如果遇到报错,先检查程序集引用是否完整,代码里的命名空间是否正确。

内容的提问来源于stack exchange,提问作者Mia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:56:07