Quartz.Net:同时防止来自 运行 的不同作业类型

Quartz.Net: Prevent different job types from running concurrently

我们的系统使用 Quartz.Net 进行调度,并且有多种作业类型(例如:作业类型 A、作业类型 B、作业类型 C)。我们希望同时避免某些类型的作业 运行:

我知道我可以使用 DisallowConcurrentExecutionAttribute 属性来实现方案 1。但是我不知道如何使用内置的 Quartz.Net 功能来实现方案 2。

我可以将工作线程数限制为 1,但这会终止所有并发,这是不希望的。 (允许 A 作业 运行 与 B 作业同时进行)

当然我可以在作业中编写这个逻辑,但最好我不希望 B 类作业知道 C 类作业。

您可以为 B 和 C 作业创建一个单独的调度程序,并将其配置为在其池中有 1 个线程。来自 How can I set the number of threads in the Quartz.NET threadpool 所以答案:

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

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