Как я могу использовать свойство в своем Job вместо словаря JobDataMap в Quartz.NET? - PullRequest
1 голос
/ 14 октября 2010

Я работаю над службой Windows, которой необходимо планировать задачи при вызове одной из ее веб-служб.Это может происходить сотни раз в секунду в худшем случае.Задача должна ждать период времени, обычно минуту или две, а затем вызывать метод, передающий параметр.

Мы попытались создать собственный класс планировщика, чтобы сделать это:

public void ScheduleTask<T>(TimeSpan delay, Action<T> task, T arg)
{
    Thread.Sleep(delay);
    threadPool.ExecuteAsync(task, arg);
}

Но мы подумали, что это будет неуместно, потому что теоретически мы можем получить сотни потоков потоков, ожидающих все.У меня сложилось впечатление, что существует ограниченное число доступных потоков пула потоков, и это может потенциально заблокировать систему.

Затем я обратился к Quartz.NET и прочитал на страницу их функций that:

Экземпляры классов заданий могут создаваться Quartz.NET или платформой вашего приложения.

и на странице 3 их учебного пособия что планировщик создает экземпляры вашего класса Job (не вас), и поэтому:

не имеет смысла определять элементы данных в классе задания, поскольку их значения будут "очищены"каждый раз, когда задание выполняется.

Не стесняйтесь кричать на меня, но как мне получить ссылку на мой экземпляр класса Job до его выполнения, чтобы я мог установить для него свойство?

  • Свойство выполняет задание параметра, поэтому я не заинтересован в нем после выполнения задания.
  • Я также хочу минимизировать количество объектов, необходимых для достижения этого, чтобы сохранить мой код аккуратным и простым .
  • Наконец, я серьезноне нравится использовать словари, поэтому предпочел бы избегать объекта JobDataMap.

1 Ответ

1 голос
/ 03 ноября 2010

Я не совсем понимаю, каков ваш вариант использования и почему вам нужно установить свойство для работы, но чтобы ответить на ваш вопрос: чтобы получить доступ к вашей работе до ее выполнения, вам нужно создать прослушиватель работы (реализовать IJobListener).Слушатель задания вызывается непосредственно перед выполнением задания, поэтому вы можете установить свойство в этой точке.

Некоторые ссылки: Документация по слушателям задания

Я написалсообщение в блоге, детализирующее создание слушателей, здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...