我正在使用Quartz .NET开发简单的调度程序。我希望Quartz在数据库中保留所有作业和触发器,因此我将AdoJobStore和设置为“正常”作业,它可以正常工作。
现在,我遇到了从数据库通用作业反序列化的问题。我上课了:
class DefaultJob<TEventType, TArgsType> : IJob{
public void Execute(IJobExecutionContext context)
{
//do sth
}
}
使用RamJobStore和DefaultJob&lt;,&gt;一切都很好 - 安排和运行工作。
使用AdoJobStore和DefaultJob&lt;,&gt;我可以安排,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方法。在它之前发生了一些错误。
有人可以帮忙吗?
答案 0 :(得分:2)
我在这里转发Marko Lahma在官方Quartz邮件列表上的答案:
Quartz.NET不支持通用作业类型,我觉得它 不应该通过拥有基类来表达它 具有通用定义,您的每个工作都只是继承了这个 class,从而定义泛型类型。
答案 1 :(得分:1)
好。这个问题很老了。似乎需要使用新数据进行更新。现在,Quartz.NET支持通用作业。就这样。问题中的示例现在可以正常运行。
class DefaultJob<TEventType, TArgsType> : IJob {
public Task Execute(IJobExecutionContext context)
{ }
}