是否可以通过运行Quartz.Net job sheduler服务添加或删除作业和触发器?

时间:2014-06-20 07:54:26

标签: c# c#-4.0 quartz-scheduler quartz.net

是否可以从正在运行的Quartz.Net sheduler服务中添加或删除作业和触发器?

1 个答案:

答案 0 :(得分:1)

所以我有一个连接到Sql Server的POC(概念证明)。

我有两个控制台应用程序:

QuartzPOC.ConsoleApp.PopulateJobs.exe
and
QuartzPOC.ConsoleApp.RunJobs.exe
我跑了     QuartzPOC.ConsoleApp.RunJobs.exe

使用空(QuartzDB)数据库。显然,在运行期间没有任何工作。

当“QuartzPOC.ConsoleApp.RunJobs.exe”正在运行时......我随后跑了

QuartzPOC.ConsoleApp.PopulateJobs.exe

仅将作业放入数据库。注意:我不会用“QuartzPOC.ConsoleApp.PopulateJobs.exe”调用“IScheduler.Start”

“QuartzPOC.ConsoleApp.PopulateJobs.exe”结束,因此不再运行。

我等了。 (请记住“QuartzPOC.ConsoleApp.RunJobs.exe”仍在运行)。

乔布斯开始跑步。

神奇的“召唤”似乎是这样的:

exec sp_executesql N'SELECT TOP 1  TRIGGER_NAME, TRIGGER_GROUP, NEXT_FIRE_TIME, PRIORITY FROM QRTZ_TRIGGERS WHERE SCHED_NAME = ''MySchedulerName'' AND TRIGGER_STATE = @state AND NEXT_FIRE_TIME <= @noLaterThan AND (MISFIRE_INSTR = -1 OR (MISFIRE_INSTR <> -1 AND NEXT_FIRE_TIME >= @noEarlierThan)) ORDER BY NEXT_FIRE_TIME ASC, PRIORITY DESC',N'@state nvarchar(7),@noLaterThan bigint,@noEarlierThan bigint',@state=N'WAITING',@noLaterThan=235333689932806505,@noEarlierThan=235333689282806505

因此,如果您填充作业(通过C#代码到Quartz.Net库)....作为另一个进程运行的调度程序将获取数据库更改。