2009-09-19 11 views
6

Obecnie wdrażam Quartz.net w prostej aplikacji, która powinna wykonać fragment kodu co (na przykład) 5 sekund. Dopiero teraz wykonanie kodu zajmuje czasem więcej niż 5 sekund.Powtórzenie zadania Quartz.net w przerwie po zakończeniu pracy

Na początku miałem problem z tym, że kod został wykonany, gdy ten sam kod był nadal uruchomiony, naprawiłem to za pomocą interfejsu IStateFulJob zamiast interfejsu IJob.

Ale naprawdę chciałbym osiągnąć to, że moje zadanie zostanie wykonane 5 sekund po zakończeniu zadania, a nie 5 sekund po mojej poprzedniej pracy.

I oczywiście może obsłużyć zdarzenie, które jest wyzwalane, gdy mój słuchacz "słyszy", że praca jest gotowa i ponownie zaplanować pracę, ale zastanawiałem się, czy nie ma żadnej standardowej funkcjonalności dla tego.

+1

'IStatefulJob' jest przestarzałe. Użyj atrybutu 'DisallowConcurrentExecution', aby uniemożliwić wykonanie wielu wystąpień jednocześnie. –

Odpowiedz

4

Obecnie nie ma standardowego sposobu, aby to osiągnąć, ponieważ Quartz.NET gra na idei, aby wstępnie zdefiniować (obliczony wcześniej) czas ognia i odpytywanie przez odpowiedni czas, aby uruchomić pracę.

Opisany sposób będzie najprostszą drogą. Albo zaplanuj od pracy kolejną egzekucję, albo od słuchacza.

+5

Czy to zmieniło się od tamtej pory do teraz? To była odpowiedź cztery lata temu, czy dzisiaj jest tak samo? –

Powiązane problemy