2016-10-24 2 views
0

Supposons que j'ai deux tâches A et B. Elles s'exécutent toutes les deux sur des intervalles différents qui peuvent se chevaucher. Par exemple, si A s'exécute toutes les 10 secondes et que B s'exécute toutes les 15 secondes, toutes les 30 secondes leur exécution coïncidera.Chaîne de travaux conditionnelle dans Quartz.NET

Je veux m'assurer que si leur exécution coïncide, le travail A arrive toujours en premier.

J'essaye de déterminer un bon moyen d'installer ceci dans Quartz.NET (2.x), mais apprécierais n'importe quelle perspicacité.

Répondre

0

Il s'avère que vous pouvez définir une valeur de priorité sur les déclencheurs de sorte que s'ils ont le même temps de déclenchement, le déclencheur avec la priorité la plus élevée est exécuté en premier.

Voir: http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/more-about-triggers.html

+1

Cela ne résoudra pas votre problème. Cela ne fonctionne que si vous avez 2 tâches et lorsque vous réduisez la TaskPool à 1. La définition de la priorité est nécessaire lorsque vous avez plusieurs tâches et que certaines d'entre elles sont plus importantes que d'autres. Que faites-vous si un troisième travail est nécessaire, mais ce travail est indépendant des 2 autres et doit être exécuté, peu importe si un travail fonctionne ou non? – Rabban

+0

Vous avez raison. Je viens de mettre en place un Mutex pour bloquer les travaux en question, mais j'ai encore besoin de m'assurer que l'emploi A se déclenchera en premier. – bbush

1

Vous pouvez utiliser ITriggerListener et implémenter la méthode VetoJobExecution. Plus d'informations peuvent être trouvées here.