名为“默认石英调度程序”的调度程序已存在,并且调度程序在关闭后无法启动

本文关键字:调度程序 启动 石英 默认 存在 名为 | 更新日期: 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();