处理嵌入windows服务的Quartz.NET调度程序的异常

处理嵌入windows服务的Quartz.NET调度程序的异常,.net,windows-services,quartz.net,.net,Windows Services,Quartz.net,我正在使用Quartz.NET作为windows服务的嵌入式计划程序 Quartz配置为使用AdoJobStore,每当SQL server因任何原因不可用时,Quartz都会抛出Quartz.JobPersistenceException异常,从而终止我的windows服务 显然,QuartzIsScheduler是从我的服务的OnStart中的try…catch块中实例化和启动的,但是一旦IScheudler启动并运行了Quartz抛出的任何异常,该catch块将不再捕获它 欢迎提供任何有关

我正在使用Quartz.NET作为windows服务的嵌入式计划程序

Quartz配置为使用
AdoJobStore
,每当SQL server因任何原因不可用时,Quartz都会抛出
Quartz.JobPersistenceException
异常,从而终止我的windows服务

显然,Quartz
IsScheduler
是从我的服务的
OnStart
中的
try…catch
块中实例化和启动的,但是一旦
IScheudler
启动并运行了Quartz抛出的任何异常,该
catch
块将不再捕获它

欢迎提供任何有关如何防止Quartz异常在这种情况下杀死我的windows服务的想法

我知道我可以在服务的恢复选项卡中设置服务崩溃后重新启动,但这是一个补丁,不是真正的解决方案

编辑:


当Quartz.NET库的
JobStoreSupport
类的
ConnectionAndTransactionHolder
方法无法获取并打开数据库连接或调用
BeginTransaction
失败时,会从该类的
ConnectionAndTransactionHolder
方法中引发这些异常。由于Quartz.NET是开源的,我可以访问此代码,我可以只注释抛出这些
jobspersistenceexception
异常的代码,但没有详细分析Quartz.NET的源代码,我不知道这会产生什么影响,如果Quartz在DB连接之前继续尝试扫描触发器是否再次可用。。。另外,我不确定许可协议是否允许对源代码进行任何修改…

加强错误报告,以便您知道在何处放置try/catch。为AppDomain.CurrentDomain.UnhandledException添加事件处理程序,并记录e.ExceptionObject.ToString()的值。不要在你找到它之后删除这个代码。