如何查找用于执行作业的线程数量

时间:2014-10-26 22:37:58

标签: quartz.net

我只需要让一个线程执行我的工作。经过一番研究后,我得出了以下实施方案:

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

var scheduler = factory.GetScheduler();

根据我的工作方式,似乎我的任务仍在使用多个线程执行。可能是我错误配置了......

在运行时中找出Quartz.net用于执行作业的线程的最简单方法是什么。

1 个答案:

答案 0 :(得分:2)

最简单的方法可能是设置自己的IJobListener

像这样注册以仅跟踪您感兴趣的工作:

    var myJobListener = new JobListener();
    scheduler.ListenerManager.AddJobListener(myJobListener, KeyMatcher<JobKey>.KeyEquals(new JobKey("myJobName", "myJobGroup")));

在JobListener中,您需要从界面实现方法:

public void JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException)
{
      //in here you can keep track of the current thread:
      var threadId = System.Threading.Thread.CurrentThread.ManagedThreadId;
}