9

我在 Quartz.NET 文档的本教程部分中看到,应该可以定义 Quartz 调度程序将使用的最大线程数。在我的特殊情况下,我想将此数字设置为 1。但在 API 文档中,我找不到访问调度程序正在使用的线程池实例并在其上设置任何属性的方法。

目前我的代码如下所示:

ISchedulerFactory schedFact = new StdSchedulerFactory();

IScheduler scheduler = schedFact.GetScheduler();
scheduler.Start();

// Setup jobs and triggers and then call scheduler.ScheduleJob...

有人知道我如何设置池中的线程数吗?

提前感谢您的帮助!

4

3 回答 3

30

quartz.config如果您出于某种原因不想依赖外部文件,则可以使用以下代码以编程方式执行此操作:

    var properties = new NameValueCollection { {"quartz.threadPool.threadCount", "1"} };

    var schedulerFactory = new StdSchedulerFactory(properties);
    var scheduler = schedulerFactory.GetScheduler();

我同意接受的答案中的评论,尽管在这种情况下你可能想[DisallowConcurrentExecutionAttribute]在你的IJob课堂上使用。

于 2013-08-06T16:57:43.797 回答
3

这在一定程度上取决于您使用的池和调度程序正在读取的配置文件。但是如果你使用标准SimpleThreadPool.cs,那么可以在 quartz.config 文件中配置线程的数量,默认情况下会创建 10 个线程:

替代文字

于 2010-11-05T18:13:50.073 回答
1

在 web.config 文件中,在石英部分下添加以下值。

<add key="quartz.threadPool.threadCount" value="20" />

值表示可用于并发执行作业的线程数。

于 2016-11-17T18:45:05.967 回答