似乎StdSchedulerFactory
返回一个名字在config:
<add key="quartz.scheduler.instanceName" value="MyQuartzScheduler" />
由于石英配置部分由键值对组成,因此使用工厂实例化调度程序会将可用调度程序的数量限制为一个。
答案 0 :(得分:2)
AFIAK,您可以在任何应用程序中创建任意数量的调度程序,但是您不能使用默认的quartz配置方法,因为它只需要一个调度程序属性集合(查看StdSchedulerFactory
{{3} }和implementation博客,如果有趣的话):
默认情况下,在Quartz.Net中,StdSchedulerFactory负责配置调度程序。启动Quartz.Net调度程序时,工厂将尝试通过在不同位置查找配置信息来自动配置调度程序:
- 托管应用程序的配置文件
- 在环境变量中指定的文件
- quartz.config文件
- 嵌入式配置文件
所以你可以做的不是使用自动调度程序配置,而是使用 他自己创建一个单独的属性集合,并将它们传递给调度程序创建构造函数:
public StdSchedulerFactory(NameValueCollection props);
使用代码方法:
NameValueCollection scheduler1Properties = new NameValueCollection();
properties["quartz.scheduler.instanceName"] = "SingleThreadScheduler";
properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz";
properties["quartz.threadPool.threadCount"] = "1";
...
var factory = new StdSchedulerFactory(scheduler1Properties);
或者您可以创建单独的石英配置并直接使用quartz this类来阅读
/// <summary>
/// Reads the properties from file system.
/// </summary>
/// <param name="fileName">The file name to read resources from.</param>
/// <returns></returns>
public static PropertiesParser ReadFromFileResource(string fileName)
并获得收藏:
/// <summary>
/// Gets the underlying properties.
/// </summary>
/// <value>The underlying properties.</value>
public virtual NameValueCollection UnderlyingProperties
{
get { return props; }
}
// PropertiesParser
类直接用于PropertiesParser配置阅读实现。