使用Quartz .NET和AdoJobStore调度通用的IJob<>。

问题描述 投票:2回答:2

我正在使用Quartz .NET开发简单的调度器。我想让Quartz在数据库中持久化所有的作业和触发器,所以我设置AdoJobStore和。在 "普通 "工作中,它可以正常工作。

现在,我在从数据库中反序列化通用Jobs时遇到了问题。我有一个类。

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

使用RamJobStore和DefaultJob<,> 一切都很好 - 排程和运行工作。

用AdoJobStore和DefaultJob<,> 我可以调度,Quartz把它保存到数据库(我可以通过管理工作室看到它),但当它试图从数据库中恢复它时,我得到。

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

I debuged JobFactory, method NewJob isn't invoked at all. 在它之前发生了一些错误。

谁能帮帮我?

c# generics scheduler quartz.net jobs
2个回答
1
投票

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

class DefaultJob<TEventType, TArgsType> : IJob {
    public Task Execute(IJobExecutionContext context)
    { }
}

2
投票

我在这里转发Quartz官方邮件列表上Marko Lahma的回答。

Quartz.NET不支持通用工作类型,我觉得它不应该支持,因为它可以很容易地通过拥有一个具有通用定义的基类来表达,你的每个工作只是继承这个类,从而定义通用类型。

© www.soinside.com 2019 - 2024. All rights reserved.