【发布时间】:2016-05-20 12:15:02
【问题描述】:
在 IScheduler 对象内的服务窗口中,每次运行大量作业。但是当你开始工作时 CPU 会得到 100% 的使用率。我想限制并发作业的运行以避免过多的资源使用。目标可能是一次运行大约 3 个进程。或多或少像 multithread 中的标准 semaforo 。我放了一个代码示例来演示我是如何执行计划的:
_schedulerQuartz = StdSchedulerFactory.GetDefaultScheduler();
for(int i = 0; i <=10;i++){
TriggerBuilder triggerBuilder = TriggerBuilder.Create()
.WithIdentity("TEST"+i.toString(), "TEST"+i.toString())
.StartNow();
triggerBuilder.WithSchedule(SimpleScheduleBuilder.RepeatSecondlyForever(60));
ITrigger trigger = triggerBuilder.Build();
IJobDetail job = JobBuilder.Create(typeof(MYPROCESS))
.WithIdentity("TEST2"+i.toString(), "TEST2"+i.toString())
.UsingJobData("ClientId", 0)
.UsingJobData("UserId", 0)
.Build();
_schedulerQuartz.ScheduleJob(job, trigger);
}
_schedulerQuartz.Start();
【问题讨论】:
标签: c# multithreading windows-services quartz.net