名为“默认石英调度程序”的调度程序已存在,并且调度程序在关闭后无法启动
本文关键字:调度程序 启动 石英 默认 存在 名为 | 更新日期: 2023-09-27 18:31:16
嗨,我的应用程序中有石英调度程序。
我的调度程序代码如下所示:
private void StartImportScheduler()
{
static ISchedulerFactory _schedFact;
static IScheduler _sched;
_sched.Shutdown(true);
_schedFact = new StdSchedulerFactory();
_sched = _schedFact.GetScheduler();
_sched.Start();
}
在我的应用程序中,我必须多次登录和注销应用程序。
每次注销时调度程序关闭,每次登录调度程序启动。
调度程序也用于我在另一个地方的应用程序。
当我注销并再次登录时,我发现以下错误-
名为"默认QuartzScheduler"的调度程序已存在关机后无法启动调度程序。
来自
文档:
Note that once a scheduler is shutdown, it cannot be restarted without being re-instantiated.
如果工厂始终返回相同的调度程序实例,这就是您收到错误的原因。你可以改用 standby() 方法,它暂时停止调度程序触发触发器。当调用 start() 时,它会使调度程序退出待机模式。
1-您应该将IScheduler
注册为单例
2-您可以检查是否有任何调度程序实例化,处理它,然后尝试创建一个新实例:
_schedFact.GetScheduler().Dispose();