我在Quartz.NET文档的this tutorial section中看到,应该可以定义Quartz调度程序将使用的最大线程数。在我的特殊情况下,我想将此数字设置为1.但是在API文档中,我找不到一种方法来访问我的调度程序正在使用的线程池实例并在其上设置任何属性。
目前我的代码如下所示:
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler scheduler = schedFact.GetScheduler();
scheduler.Start();
// Setup jobs and triggers and then call scheduler.ScheduleJob...
有人知道如何设置池中的线程数吗?
提前感谢您的帮助!
它取决于你正在使用的池和调度程序正在读取的配置文件。但是如果你使用标准的SimpleThreadPool.cs
,则可以在quartz.config文件中配置线程数量,默认情况下会创建10个线程:
如果您不想因任何原因依赖外部quartz.config
文件,可以使用下面的代码以编程方式执行此操作:
var properties = new NameValueCollection { {"quartz.threadPool.threadCount", "1"} };
var schedulerFactory = new StdSchedulerFactory(properties);
var scheduler = schedulerFactory.GetScheduler();
我同意接受的答案中的评论,但在这种情况下,你可能想在你的[DisallowConcurrentExecutionAttribute]
课上使用IJob
。
在web.config文件中,在quartz部分下面添加以下值。
<add key="quartz.threadPool.threadCount" value="20" />
值表示可用于并发执行作业的线程数。