我只需要让一个线程执行我的工作。经过一番研究后,我得出了以下实施方案:
var properties = new NameValueCollection { { "quartz.threadPool.threadCount", "1" } };
var factory = new StdSchedulerFactory(properties);
var scheduler = factory.GetScheduler();
根据我的工作方式,似乎我的任务仍在使用多个线程执行。可能是我错误配置了......
在运行时中找出Quartz.net用于执行作业的线程的最简单方法是什么。
答案 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;
}