代码之家  ›  专栏  ›  技术社区  ›  Slauma

如何设置quartz.net线程池中的线程数?

  •  9
  • Slauma  · 技术社区  · 14 年前

    我见过 this tutorial section 在Quartz.net文档中,可以定义Quartz计划程序将要使用的线程的最大数量。在我的特殊情况下,我想把这个数字设为1。但是在api文档中,我找不到一种方法来访问我的调度程序正在使用的threadpool实例并在其上设置任何属性。

    当前我的代码如下:

    ISchedulerFactory schedFact = new StdSchedulerFactory();
    
    IScheduler scheduler = schedFact.GetScheduler();
    scheduler.Start();
    
    // Setup jobs and triggers and then call scheduler.ScheduleJob...
    

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

    提前感谢您的帮助!

    3 回复  |  直到 5 年前
        1
  •  3
  •   jdecuyper    14 年前

    这取决于您使用的池和调度程序正在读取的配置文件。但是如果您使用的是标准>代码> SimultRealCupp.C.<代码>,那么可以在Qualth.CONFIG文件中配置线程的数量,默认情况下创建了10个线程:

    计划程序正在读取的文件。但是如果你用的是标准 SimpleThreadPool.cs 然后可以在quartz.config文件中配置线程数量,默认情况下会创建10个线程:

    alt text

        2
  •  27
  •   Scott Lerch    11 年前

    如果不想依赖外部代码,可以使用下面的代码以编程方式进行此操作 quartz.config 出于任何原因归档:

        var properties = new NameValueCollection { {"quartz.threadPool.threadCount", "1"} };
    
        var schedulerFactory = new StdSchedulerFactory(properties);
        var scheduler = schedulerFactory.GetScheduler();
    

    我同意接受答案中的评论,尽管在这种情况下,您可能希望使用 [DisallowConcurrentExecutionAttribute] 对你 IJob 而不是上课。

        3
  •  1
  •   Tareq    6 年前

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

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

    值表示可同时执行作业的线程数。