2016-11-11 2 views
0

모두가 PersistJobDataAfterExecution에 대해 이야기하지만, 작업을 다시 실행하지 않으면 작동하지 않는 것처럼 보입니다. 처음으로 잘 작동하면 왜 두 번 일을해야합니까? 게다가 지속성이 있다면 어디에서? JobDetail은 실행 후 존재하지 않습니다.석영 - 작업 후 사후 실행에서 데이터 가져 오기

나는 JobDataMap에 데이터를 저장하고, 작업이 진행되는 동안 이 진행되는 동안 (ajax 웹 호출을 통해)을 실행 중이다. 작업이 완료되면이 표시되고 을 삭제하므로 자체 트리거이므로 스케줄러에 더 이상 JobDetail이 없으므로 JobDataMap이 없습니다.

일반적으로 응용 프로그램 캐시에 데이터를 저장 하겠지만이 데이터는 사용자 세션에만 해당되므로 일반적으로 데이터를 응용 프로그램 캐시에 저장합니다. ASP.net HttpContext는 Quartz 스레드에서 사용할 수 없습니다.

스레드가 완전히 독립적 일 때 (과거 시제) Quartz Job에서 데이터를 가져 와서 일시 중지하고 작업을 중단하면 둘 다 실행 완료와 동일한 결과가 발생합니다 (IContext) 그것에 의해 그것은 파괴한다?

실제로 무한 루프를 실행하여 외부에서 데이터를 얻은 다음 하드 킬하십시오.

답변

0

스레드로부터 안전하기 때문에 HttpRuntime.Cache를 사용하여 종료했습니다. 슬립 루프 (hackish) 사용, ADO (bleh) 사용을위한 석영 변경, SynchronizationContext에 게시 (불안정) 또는 디스크에 쓰는 것 (두 가지 방법 중 하나를 사용하여 작업을 두 번 호출하는 PersistJobDataAfterExecution) 슈퍼 블레).