2016-11-11 21 views
0

Все говорят о PersistJobDataAfterExecution, но это, похоже, не работает, если вы снова не выполняете задание, и я не заинтересован в этом. Зачем мне выполнять работу дважды, когда она работает нормально в первый раз. Кроме того, если это сохраняется, то где? JobDetail не существует после выполнения.Quartz - Получить данные после выполнения задания

Я храню данные в JobDataMap и использую это, чтобы получить выполнение задания во время его работы (через веб-вызовы ajax). И когда задание завершает выполнение, оно удаляет его собственный триггер, и поэтому планировщик больше не имеет JobDetail и, следовательно, не JobDataMap.

Обычно я хотел бы хранить данные в кэше приложений, но я не могу, так как эти данные относятся к сеансу пользователя. ASP.net HttpContext недоступен из кварцевой нити.

Как я могу получить данные из выполненного (прошедшего времени) задания Quartz, когда поток полностью независим, и приостанавливая задание и прерывая задание, оба результата приводят к тому же результату, что и его завершение (IContext), посредством чего он разрушает себя?

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

ответ

0

В итоге я использовал HttpRuntime.Cache, так как он потокобезопасен. Это самое простое решение, в отличие от альтернативных вариантов: , дважды вызывающий задание (PersistJobDataAfterExecution), с использованием циклов sleep (хаки), изменение кварца для использования ADO (bleh), размещение в SynchronizationContext (неустойчивое) или запись на диск (супер bleh).

 Смежные вопросы

  • Нет связанных вопросов^_^