2010-08-24 11 views
4

Est-il possible de répéter un travail dans Quartz pour toujours de manière sérielle?Comment planifier un travail dans Quartz qui se répète pour toujours?

Maintenant, si je ne définis pas RepeatInterval, j'obtiens une erreur indiquant que RepeatInterval ne peut pas être zéro. Est-il possible de configurer ceci en utilisant Spring.NET? Ce que j'ai maintenant est ceci:

<?xml version="1.0" encoding="utf-8" ?> 
<objects xmlns="http://www.springframework.net"> 
    <object id="ExampleBusinessObject" type="Edu3.Core.Job.ExampleJob, Edu3.Core"/> 

    <object id="JobDetail" 
      type="Spring.Scheduling.Quartz.MethodInvokingJobDetailFactoryObject, 
       Spring.Scheduling.Quartz"> 
    <property name="TargetObject" ref="ExampleBusinessObject" /> 
    <property name="TargetMethod" value="DoIt" /> 
    <property name="Concurrent" value="false" /> 
    </object> 

    <object id="SimpleTrigger" 
      type="Spring.Scheduling.Quartz.SimpleTriggerObject, 
       Spring.Scheduling.Quartz"> 
    <!-- see the example of method invoking job above --> 
    <property name="JobDetail" ref="JobDetail" /> 
    <!-- 10 seconds --> 
    <!--<property name="StartDelay" value="5s" />--> 
    <!-- repeat every 50 seconds --> 
    <property name="RepeatInterval" value="10s" /> 
    </object> 

    <object id="quartzSchedulerFactory" 
      type="Spring.Scheduling.Quartz.SchedulerFactoryObject, 
       Spring.Scheduling.Quartz"> 
    <property name="triggers"> 
     <list> 
     <ref object="SimpleTrigger" /> 
     </list> 
    </property> 
    </object> 
</objects> 

Je ne veux pas que différents threads exécutent le même travail. Je veux juste que DoIt soit déclenché. Si DoIt est terminé, DoIt est à nouveau déclenché. Comme une boucle infinitive.

Répondre

8

'RepeatCount' est '-1'

+0

Je reçois une erreur: [Spring.Core.TypeMismatchException: Impossible de convertir la valeur de propriété de type [System.String] type requis [System.TimeSpan] pour les biens 'RepeatInterval'., Exception interne: System.ArgumentException: L'intervalle de répétition doit être> = 0 à Quartz.SimpleTrigger.set_RepeatInterval (valeur TimeSpan) à _dynamic_Quartz.SimpleTrigger.set_RepeatInterval (Object, Object, Object []) –

+1

Si oui Je ne le mets pas du tout, j'ai l'erreur de dire que ça ne peut pas être zéro. –

+0

Ok, je vois ce que tu veux dire. Mais ... si vous n'avez besoin que d'une boucle infinie (et ne planifiez rien) je ne vois pas pourquoi vous voulez utiliser Quartz. Utilisez simplement une boucle while. Si vous voulez répéter le cycle pour toujours, essayez d'utiliser les deux propriétés: RepeatInterval (<> 0) et RepeatCount (-1). J'espère que cela vous aide .. – Aito