2

我正在使用 Quartz .NET 开发简单的调度程序。我想 Quartz 将所有作业和触发器保存在数据库中,所以我设置了 AdoJobStore 并且使用“正常”作业它可以正常工作。

现在,我在从数据库通用作业中反序列化时遇到问题。我有课:

class DefaultJob<TEventType, TArgsType> : IJob{
 public void Execute(IJobExecutionContext context)
 {
         //do sth
 }
}

使用 RamJobStore 和 DefaultJob<,> 一切正常 - 调度和运行工作。

使用 AdoJobStore 和 DefaultJob<,> 我可以安排,Quartz 将其保存到数据库中(我可以通过 Management Studio 看到它),但是当它尝试从数据库中恢复它时,我得到:

A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
A first chance exception of type 'Quartz.JobPersistenceException' occurred in Quartz.dll
A first chance exception of type 'Quartz.JobPersistenceException' occurred in Quartz.dll

我调试了 JobFactory,根本没有调用方法 NewJob。在它之前发生了一些错误。

有人可以帮忙吗?

4

2 回答 2

2

我在官方 Quartz 邮件列表上转发 Marko Lahma 的答案:

Quartz.NET 不支持泛型作业类型,我认为它不应该,因为它可以通过具有泛型定义的基类来轻松表达,并且您的每个作业都只是继承这个类并因此定义泛型类型。

于 2012-09-09T09:48:36.423 回答
1

好的。这个问题很老了。并且似乎需要用新数据进行更新。现在,Quartz.NET 支持通用作业。就这样。问题中的示例现在可以完美运行。

class DefaultJob<TEventType, TArgsType> : IJob {
    public Task Execute(IJobExecutionContext context)
    { }
}
于 2020-04-25T21:36:23.937 回答