gpt4 book ai didi

c# - quartz 调度器 : How to pass custom objects as JobParameter?

转载 作者:可可西里 更新时间:2023-11-01 07:49:45 25 4
gpt4 key购买 nike

我打算编写一个 ASP.NET 页面来按需触发作业。目前,我正在使用 SimpleTrigger 类来触发作业,但 __Trigger 类中没有一个支持对象类型作为 JobParameters 中的值,据我所知,在钩子(Hook)下使用 WCF Tcp 绑定(bind)将参数传递给作业调度引擎。我想知道如何将自定义对象(可序列化)作为作业参数传递。感谢您的建议!

最佳答案

有两种方法可以传递在 Quartz 作业执行时可以检索的对象:

传递数据映射中的实例。设置作业时,使用如下键将实例添加到 map :

// Create job etc...
var MyClass _myInstance;
statusJob.JobDataMap.Put("myKey", _myInstance);
// Schedule job...

像这样在作业的 Execute() 方法中检索实例:

public void Execute(IJobExecutionContext context)
{
var dataMap = context.MergedJobDataMap;
var myInstance = (MyClass)dataMap["myKey"];

设置作业时将实例添加到调度程序上下文中,如下所示:

  ISchedulerFactory schedFact = new StdSchedulerFactory();
_sched = schedFact.GetScheduler();
_sched.Start();
// Create job etc...
var MyClass _myInstance;
_sched.Context.Put("myKey", myInstance);
// Schedule job...

像这样在作业的 Execute() 方法中检索实例:

public void Execute(IJobExecutionContext context)
{
var schedulerContext = context.Scheduler.Context;
var myInstance = (MyClass)schedulerContext.Get("myKey");

关于c# - quartz 调度器 : How to pass custom objects as JobParameter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7137960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com