Как правильно очистить ramjobstore quartz.net без перезапуска приложения в c # - PullRequest
1 голос
/ 31 мая 2011

Если есть способ сделать это, могу ли я подтвердить, просмотрев ramstore до и после очистки?Как мы можем просмотреть содержимое хранилища программно?В моем случае я читаю всю информацию о работе и триггере из файла.На некоторых пользовательских событиях мне нужно остановить планировщик и начать все заново, не перезапуская приложение.спасибо

Ответы [ 2 ]

1 голос
/ 31 мая 2011

RamJobStore из платформ Quartz.NET предоставляет несколько методов для просмотра его содержимого, самыми простыми являются функции '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);

Это просто удалит все работы на объекте, но может занять много времени в больших хранилищах.Поэтому есть также функция «Выключение ()», которая просто удаляет весь магазин из памяти (после чего вы можете создать новый).

Я вставил ... в некоторые функции(s), который является SchedulingContext , который вы использовали для хранения заданий в первую очередь.

0 голосов
/ 21 октября 2016

к сведению из документации:

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

В моем ограниченном опыте работы с кварцем я бы подумал, что вы можете просто взять содержимое планировщика, а затем выключить планировщик и запустить новый?

...