如果有办法做到这一点,我还可以通过查看清除之前和之后的ramstore来确认。我们如何以编程方式查看ramstore的内容?在我的情况下,我正在阅读所有工作并从文件中触发信息。在某些自定义事件中,我需要停止调度程序并重新启动,而无需重新启动应用程序。 谢谢
答案 0 :(得分:1)
Quartz.NET框架中的RamJobStore提供了几种方法来查看它的内容,最简单的是'GetJobGroupNames()'和'GetJobNames()'函数:
public virtual string[] GetJobGroupNames(
SchedulingContext ctxt
)
public virtual string[] GetJobNames(
SchedulingContext ctxt,
string groupName
)
你可以像这样使用它:
foreach(string group in ramstore.GetJobGroupNames(...))
foreach(string job in ramstore.GetJobNames(..., group))
MessageBox.Show(String.Format("{0} (Group: {1})", job, group));
当然这是不你想要的,因为它只会显示你在RamJobStore中所有作业的消息框,但它确实允许你查看整个商店的内容。此外,您现在可以使用两种方法删除所有作业。您可以使用“RemoveJob()”或“Shutdown()”功能。
foreach(string group in ramstore.GetJobGroupNames(...))
foreach(string job in ramstore.GetJobNames(..., group))
ramstore.RemoveJob(..., job, group);
这将删除对象上的所有作业,但在大型商店中可能会耗费大量时间。因此,还有一个'Shutdown()'函数,它只是从存储器中删除整个存储(之后你可以创建一个新存储)。
我把...放在一些函数中,这是你用来存储作业的 SchedulingContext 。
答案 1 :(得分:0)
fyi来自文档:
Never use a JobStore instance directly in your code.
For some reason many people attempt to do this.
The JobStore is for behind-the-scenes use of Quartz itself.
You have to tell Quartz (through configuration) which JobStore
to use, but then you should only work with the Scheduler interface
in your code.
在此处找到:http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/job-stores.html
在我对石英的有限经验中,我认为你可以抓住调度程序的内容,然后关闭调度程序并启动一个新程序?