SlideShare une entreprise Scribd logo
Mécanisme de planification de tâches   Auteur: Ludovic COLLET
Objectif

         Exécuter des tâches l'une après l'autres dans un service Windows. Les tâches se mettront en
         file d'attente dans le cas où une tâche est déjà en cours d'exécution.
         Use Case:
         Un utilisateur doit pouvoir exécuter des taches au travers d'un site Asp .net


         TPL

         C'est une librairie qui permet de mettre en place simplement des mécanismes asynchrones.
         Task Parrallel Library
         Incluant les namespaces System.Threading et System.Threading.Tasks.

         Je ne vais rentrer dans les détails de la TPL.

         Juste la base pour le lancement de tâches:




31/01/2012       Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   2
Par contre dans le cas ci-dessus les taches vont s'exécuter en même temps.
    L'output donnera ceci :




      C'est là qu'entre en jeu l'utilisation de tache planifiées (Scheduling task)


31/01/2012      Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   3
Taches Planifiées
    Par défaut, la TPL (aussi Plinq) , utilise le .NET Framework ThreadPool.

    C'est là qu'entre en jeu l'utilisation de tache planifiées (Scheduling task)

    Par défaut, la TPL (aussi Plinq) , utilise le .NET Framework ThreadPool.

    Les taches sont exécutées par des threads worker (leurs nombres maximum dépendent de la
    machine). Ils récupèrent les taches à partir du threadPool et les exécutent. Si tous les
    threadWorker sont occupés alors les nouvelles tâches sont laissées dans la file d'attente globale
    du threadPool.
    Il existe une file d'attente globale et des files d'attentes locales propres à chaque tâche.
    Mais ces planifications peuvent être largement étendues grâce à la possibilité d'extension de la
    classe abstraite TaskScheduler , qui peut être dérivée pour implémenter des algorithmes de
    planification personnalisés, comme ce qui est fait dans la librairie Parrallel Extensions Extra

    Infos:
    A propos de la file d'attente globale et locale du Thread Pool je vous conseille ces deux articles :
    Task Scheduler MSDN
    Work-Stealing



31/01/2012     Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   4
Parallel Extensions Extras

    La librairie est disponible ici.
    Dans les différents projets il y a ParrallelExtensionExtras.
    Elle est développée par l'équipe qui s'occupe de la parallélisassions chez Microsoft, notamment
    Stephen Toub.
    PEE a beaucoup de fonctionnalités différentes, sur ce billet on s'arrêtera juste sur les
    TaskScheduler. Et plus précisément sur :
    OrderedTaskScheduler
    QueuedTaskScheduler


    OrderedTaskScheduler

    C'est une variante plus basique du QueuedTaskScheduler.
    Elle n'a qu'une fonction : mettre en file d'attente les différentes tâches assignées.
    Pas de multi threading.
    Elle m'a servit à mettre en place en quelques ligne de code un système de mise en file d'attente
    efficace.




31/01/2012     Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   5
Voyons un peu le code:




    Et donc grâce à notre TaskScheduler , contrairement au premier exemple, Les tâches sont mises
    en attente et exécuter l'une après l'autre.
    L'output donnera ceci :




31/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   6
On remarque aussi que ce TaskScheduler n'utilise q'un seul thread worker.
    Donc très facilement en quelque lignes de codes on peut mettre en place un système de file d'attente
    qui pourrait être particulièrement utile dans l'exécution de différente tâches utilisateur (Chargement
    de données, Différents traitements sur les données…)
    Mais voilà ça ne me suffit pas je veux pouvoir prioriser des tâches.


    QueuedTaskScheduler
    Pour pouvoir prioriser les taches nous allons utiliser la classe QueuedTaskScheduler.
    Priorisation :
    Code :




31/01/2012     Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   7
Toutes les tâches assignées au scheduler pri0 seront priorisées.
    L'output donne cela :




      On voit bien la priorité donné aux tâches High.
      On remarque aussi dans le constructeur le paramètre threadCount.

      En Effet ce TaskScheduler est multiThread et on peut lui préciser sur combien de niveau.

      Pour l'exemple je l'ai rendu MonoThread avec qu'une seule exécution possible.
      Si aucun paramètre n'est passé il prendra par défaut les capacités de la machine.


31/01/2012      Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   8
Conclusion

    Comme on a pu le voir, Il existe des librairies puissantes qui nous permettent de mettre en place
    des systèmes complexes très facilement.

    On peut très bien imaginer utiliser ces fonctionnalités dans un service Windows qui exécuterait
    des tâches envoyées par des clients externes.
    Il y a encore beaucoup de fonctionnalités disponibles, notamment avec le QueuedTaskScheduler.

    A vous de les découvrir.




31/01/2012     Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   9

Contenu connexe

En vedette

Vu tru va tien
Vu tru va tienVu tru va tien
Vu tru va tien
Phương Bùi
 
Scoop.it : Knowledge Sharing Solution
Scoop.it : Knowledge Sharing SolutionScoop.it : Knowledge Sharing Solution
Scoop.it : Knowledge Sharing Solution
scoopit_fr
 
Tecnologia victoria
Tecnologia victoriaTecnologia victoria
Tecnologia victoria
eslyvictora
 
courts circuits : le community planning (la gestion de marque en 3D "ici, mai...
courts circuits : le community planning (la gestion de marque en 3D "ici, mai...courts circuits : le community planning (la gestion de marque en 3D "ici, mai...
courts circuits : le community planning (la gestion de marque en 3D "ici, mai...
nous sommes vivants
 
ADDE: Jornal Verdade e Vida - Edição Abril - Maio
ADDE: Jornal Verdade e Vida - Edição Abril - MaioADDE: Jornal Verdade e Vida - Edição Abril - Maio
ADDE: Jornal Verdade e Vida - Edição Abril - Maio
Associação Espírita Allan Kardec
 
CV_V. Monfort V7
CV_V. Monfort V7CV_V. Monfort V7
CV_V. Monfort V7
monfort
 

En vedette (8)

Scrum & VIdal Retour d'experience
Scrum & VIdal Retour d'experienceScrum & VIdal Retour d'experience
Scrum & VIdal Retour d'experience
 
Vu tru va tien
Vu tru va tienVu tru va tien
Vu tru va tien
 
Scoop.it : Knowledge Sharing Solution
Scoop.it : Knowledge Sharing SolutionScoop.it : Knowledge Sharing Solution
Scoop.it : Knowledge Sharing Solution
 
Nigel Baynes Ref
Nigel Baynes RefNigel Baynes Ref
Nigel Baynes Ref
 
Tecnologia victoria
Tecnologia victoriaTecnologia victoria
Tecnologia victoria
 
courts circuits : le community planning (la gestion de marque en 3D "ici, mai...
courts circuits : le community planning (la gestion de marque en 3D "ici, mai...courts circuits : le community planning (la gestion de marque en 3D "ici, mai...
courts circuits : le community planning (la gestion de marque en 3D "ici, mai...
 
ADDE: Jornal Verdade e Vida - Edição Abril - Maio
ADDE: Jornal Verdade e Vida - Edição Abril - MaioADDE: Jornal Verdade e Vida - Edição Abril - Maio
ADDE: Jornal Verdade e Vida - Edição Abril - Maio
 
CV_V. Monfort V7
CV_V. Monfort V7CV_V. Monfort V7
CV_V. Monfort V7
 

Similaire à Mécanisme de planification de tâches

synchronization.pdf
synchronization.pdfsynchronization.pdf
synchronization.pdf
Patiento Del Mar
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
Roberto Barros De Sousa
 
chapitre 2 Android 2.pptx
chapitre 2 Android 2.pptxchapitre 2 Android 2.pptx
Design patterns
Design patternsDesign patterns
Design patterns
CocoaHeads.fr
 
Serveur node red
Serveur node redServeur node red
Serveur node red
FerchichiYassine
 
Amina 2010 workshop slides final version
Amina 2010 workshop slides final versionAmina 2010 workshop slides final version
Amina 2010 workshop slides final version
RMwebsite
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
JEAN-GUILLAUME DUJARDIN
 
Ansible-cours .pdf
Ansible-cours .pdfAnsible-cours .pdf
Ansible-cours .pdf
Jaouad Assabbour
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_thread
Saber LAJILI
 
Outils front-end
Outils front-endOutils front-end
Outils front-end
Thomas Bodin
 
TD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdfTD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdf
Ines Ben Hassine
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
gplanchat
 
Présentation sur splunk
Présentation sur splunkPrésentation sur splunk
Présentation sur splunk
Najib Ihsine
 
Noyau temps réel freertos cheriet mohammed el amine
Noyau temps réel freertos cheriet mohammed el amineNoyau temps réel freertos cheriet mohammed el amine
Noyau temps réel freertos cheriet mohammed el amine
CHERIET Mohammed El Amine
 
Wilfreid K. AGBO et Grégoire J. MONEYENGONO - Java thread
Wilfreid K. AGBO et Grégoire J. MONEYENGONO - Java threadWilfreid K. AGBO et Grégoire J. MONEYENGONO - Java thread
Wilfreid K. AGBO et Grégoire J. MONEYENGONO - Java thread
Wilfreid AGBO
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Adrian CID ALMAGUER
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
Microsoft
 
Softshake 2015 comment tester et optimiser la performance d'un si
Softshake 2015   comment tester et optimiser la performance d'un siSoftshake 2015   comment tester et optimiser la performance d'un si
Softshake 2015 comment tester et optimiser la performance d'un si
Marc Bojoly
 
Cours spring
Cours springCours spring
Cours spring
mohamed el haddad
 

Similaire à Mécanisme de planification de tâches (20)

synchronization.pdf
synchronization.pdfsynchronization.pdf
synchronization.pdf
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
 
chapitre 2 Android 2.pptx
chapitre 2 Android 2.pptxchapitre 2 Android 2.pptx
chapitre 2 Android 2.pptx
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Serveur node red
Serveur node redServeur node red
Serveur node red
 
Amina 2010 workshop slides final version
Amina 2010 workshop slides final versionAmina 2010 workshop slides final version
Amina 2010 workshop slides final version
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Ansible-cours .pdf
Ansible-cours .pdfAnsible-cours .pdf
Ansible-cours .pdf
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_thread
 
Outils front-end
Outils front-endOutils front-end
Outils front-end
 
TD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdfTD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdf
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
 
Présentation sur splunk
Présentation sur splunkPrésentation sur splunk
Présentation sur splunk
 
Noyau temps réel freertos cheriet mohammed el amine
Noyau temps réel freertos cheriet mohammed el amineNoyau temps réel freertos cheriet mohammed el amine
Noyau temps réel freertos cheriet mohammed el amine
 
Wilfreid K. AGBO et Grégoire J. MONEYENGONO - Java thread
Wilfreid K. AGBO et Grégoire J. MONEYENGONO - Java threadWilfreid K. AGBO et Grégoire J. MONEYENGONO - Java thread
Wilfreid K. AGBO et Grégoire J. MONEYENGONO - Java thread
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 
Softshake 2015 comment tester et optimiser la performance d'un si
Softshake 2015   comment tester et optimiser la performance d'un siSoftshake 2015   comment tester et optimiser la performance d'un si
Softshake 2015 comment tester et optimiser la performance d'un si
 
Cours spring
Cours springCours spring
Cours spring
 

Plus de Novencia Groupe

Datalake de l'idée à la plateforme
Datalake de l'idée à la plateformeDatalake de l'idée à la plateforme
Datalake de l'idée à la plateforme
Novencia Groupe
 
Ambient intelligence & bigdata
Ambient intelligence & bigdataAmbient intelligence & bigdata
Ambient intelligence & bigdata
Novencia Groupe
 
Workshop Fonctionnel - Mecanisme surveillance unique
Workshop Fonctionnel - Mecanisme surveillance uniqueWorkshop Fonctionnel - Mecanisme surveillance unique
Workshop Fonctionnel - Mecanisme surveillance unique
Novencia Groupe
 
Workshop Fonctionnel - TITRISATION : LE RETOUR
Workshop Fonctionnel - TITRISATION : LE RETOURWorkshop Fonctionnel - TITRISATION : LE RETOUR
Workshop Fonctionnel - TITRISATION : LE RETOUR
Novencia Groupe
 
L’approche Big Data en finance de marché 2/2
L’approche Big Data en finance de marché 2/2L’approche Big Data en finance de marché 2/2
L’approche Big Data en finance de marché 2/2
Novencia Groupe
 
L’approche Big Data en finance de marché 1/2
L’approche Big Data en finance de marché 1/2L’approche Big Data en finance de marché 1/2
L’approche Big Data en finance de marché 1/2
Novencia Groupe
 
Les Acronymes financiers de 2014
Les Acronymes financiers de 2014Les Acronymes financiers de 2014
Les Acronymes financiers de 2014
Novencia Groupe
 
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...
Novencia Groupe
 
Qualité de code, sonar, la dette
Qualité de code, sonar, la detteQualité de code, sonar, la dette
Qualité de code, sonar, la dette
Novencia Groupe
 
Sonar
Sonar Sonar
Euro II : Nouvelle donne 2012
Euro II : Nouvelle donne 2012Euro II : Nouvelle donne 2012
Euro II : Nouvelle donne 2012
Novencia Groupe
 
Les systèmes de compensation
Les systèmes de compensationLes systèmes de compensation
Les systèmes de compensation
Novencia Groupe
 
Présentation des marché de capitaux
Présentation des marché de capitauxPrésentation des marché de capitaux
Présentation des marché de capitaux
Novencia Groupe
 
Mobile development
Mobile developmentMobile development
Mobile development
Novencia Groupe
 
Nouveautés disponibles dans asp
Nouveautés disponibles dans aspNouveautés disponibles dans asp
Nouveautés disponibles dans asp
Novencia Groupe
 
Les 3 modes de concurrence wcf
Les 3 modes de concurrence wcfLes 3 modes de concurrence wcf
Les 3 modes de concurrence wcf
Novencia Groupe
 
Introduction à la finance de marché
Introduction à la finance de marchéIntroduction à la finance de marché
Introduction à la finance de marché
Novencia Groupe
 
Utilisation d'une api web avec asp
Utilisation d'une api web avec aspUtilisation d'une api web avec asp
Utilisation d'une api web avec asp
Novencia Groupe
 

Plus de Novencia Groupe (20)

Datalake de l'idée à la plateforme
Datalake de l'idée à la plateformeDatalake de l'idée à la plateforme
Datalake de l'idée à la plateforme
 
Ambient intelligence & bigdata
Ambient intelligence & bigdataAmbient intelligence & bigdata
Ambient intelligence & bigdata
 
Workshop Fonctionnel - Mecanisme surveillance unique
Workshop Fonctionnel - Mecanisme surveillance uniqueWorkshop Fonctionnel - Mecanisme surveillance unique
Workshop Fonctionnel - Mecanisme surveillance unique
 
Workshop Fonctionnel - TITRISATION : LE RETOUR
Workshop Fonctionnel - TITRISATION : LE RETOURWorkshop Fonctionnel - TITRISATION : LE RETOUR
Workshop Fonctionnel - TITRISATION : LE RETOUR
 
L’approche Big Data en finance de marché 2/2
L’approche Big Data en finance de marché 2/2L’approche Big Data en finance de marché 2/2
L’approche Big Data en finance de marché 2/2
 
L’approche Big Data en finance de marché 1/2
L’approche Big Data en finance de marché 1/2L’approche Big Data en finance de marché 1/2
L’approche Big Data en finance de marché 1/2
 
Les Acronymes financiers de 2014
Les Acronymes financiers de 2014Les Acronymes financiers de 2014
Les Acronymes financiers de 2014
 
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...
 
Qualité de code, sonar, la dette
Qualité de code, sonar, la detteQualité de code, sonar, la dette
Qualité de code, sonar, la dette
 
Sonar
Sonar Sonar
Sonar
 
Visual studio 2012
Visual studio 2012Visual studio 2012
Visual studio 2012
 
Euro II : Nouvelle donne 2012
Euro II : Nouvelle donne 2012Euro II : Nouvelle donne 2012
Euro II : Nouvelle donne 2012
 
Les systèmes de compensation
Les systèmes de compensationLes systèmes de compensation
Les systèmes de compensation
 
Présentation des marché de capitaux
Présentation des marché de capitauxPrésentation des marché de capitaux
Présentation des marché de capitaux
 
Mobile development
Mobile developmentMobile development
Mobile development
 
Nouveautés disponibles dans asp
Nouveautés disponibles dans aspNouveautés disponibles dans asp
Nouveautés disponibles dans asp
 
La crise de l'euro
La crise de l'euroLa crise de l'euro
La crise de l'euro
 
Les 3 modes de concurrence wcf
Les 3 modes de concurrence wcfLes 3 modes de concurrence wcf
Les 3 modes de concurrence wcf
 
Introduction à la finance de marché
Introduction à la finance de marchéIntroduction à la finance de marché
Introduction à la finance de marché
 
Utilisation d'une api web avec asp
Utilisation d'une api web avec aspUtilisation d'une api web avec asp
Utilisation d'une api web avec asp
 

Mécanisme de planification de tâches

  • 1. Mécanisme de planification de tâches Auteur: Ludovic COLLET
  • 2. Objectif Exécuter des tâches l'une après l'autres dans un service Windows. Les tâches se mettront en file d'attente dans le cas où une tâche est déjà en cours d'exécution. Use Case: Un utilisateur doit pouvoir exécuter des taches au travers d'un site Asp .net TPL C'est une librairie qui permet de mettre en place simplement des mécanismes asynchrones. Task Parrallel Library Incluant les namespaces System.Threading et System.Threading.Tasks. Je ne vais rentrer dans les détails de la TPL. Juste la base pour le lancement de tâches: 31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 2
  • 3. Par contre dans le cas ci-dessus les taches vont s'exécuter en même temps. L'output donnera ceci : C'est là qu'entre en jeu l'utilisation de tache planifiées (Scheduling task) 31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 3
  • 4. Taches Planifiées Par défaut, la TPL (aussi Plinq) , utilise le .NET Framework ThreadPool. C'est là qu'entre en jeu l'utilisation de tache planifiées (Scheduling task) Par défaut, la TPL (aussi Plinq) , utilise le .NET Framework ThreadPool. Les taches sont exécutées par des threads worker (leurs nombres maximum dépendent de la machine). Ils récupèrent les taches à partir du threadPool et les exécutent. Si tous les threadWorker sont occupés alors les nouvelles tâches sont laissées dans la file d'attente globale du threadPool. Il existe une file d'attente globale et des files d'attentes locales propres à chaque tâche. Mais ces planifications peuvent être largement étendues grâce à la possibilité d'extension de la classe abstraite TaskScheduler , qui peut être dérivée pour implémenter des algorithmes de planification personnalisés, comme ce qui est fait dans la librairie Parrallel Extensions Extra Infos: A propos de la file d'attente globale et locale du Thread Pool je vous conseille ces deux articles : Task Scheduler MSDN Work-Stealing 31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 4
  • 5. Parallel Extensions Extras La librairie est disponible ici. Dans les différents projets il y a ParrallelExtensionExtras. Elle est développée par l'équipe qui s'occupe de la parallélisassions chez Microsoft, notamment Stephen Toub. PEE a beaucoup de fonctionnalités différentes, sur ce billet on s'arrêtera juste sur les TaskScheduler. Et plus précisément sur : OrderedTaskScheduler QueuedTaskScheduler OrderedTaskScheduler C'est une variante plus basique du QueuedTaskScheduler. Elle n'a qu'une fonction : mettre en file d'attente les différentes tâches assignées. Pas de multi threading. Elle m'a servit à mettre en place en quelques ligne de code un système de mise en file d'attente efficace. 31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 5
  • 6. Voyons un peu le code: Et donc grâce à notre TaskScheduler , contrairement au premier exemple, Les tâches sont mises en attente et exécuter l'une après l'autre. L'output donnera ceci : 31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 6
  • 7. On remarque aussi que ce TaskScheduler n'utilise q'un seul thread worker. Donc très facilement en quelque lignes de codes on peut mettre en place un système de file d'attente qui pourrait être particulièrement utile dans l'exécution de différente tâches utilisateur (Chargement de données, Différents traitements sur les données…) Mais voilà ça ne me suffit pas je veux pouvoir prioriser des tâches. QueuedTaskScheduler Pour pouvoir prioriser les taches nous allons utiliser la classe QueuedTaskScheduler. Priorisation : Code : 31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 7
  • 8. Toutes les tâches assignées au scheduler pri0 seront priorisées. L'output donne cela : On voit bien la priorité donné aux tâches High. On remarque aussi dans le constructeur le paramètre threadCount. En Effet ce TaskScheduler est multiThread et on peut lui préciser sur combien de niveau. Pour l'exemple je l'ai rendu MonoThread avec qu'une seule exécution possible. Si aucun paramètre n'est passé il prendra par défaut les capacités de la machine. 31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 8
  • 9. Conclusion Comme on a pu le voir, Il existe des librairies puissantes qui nous permettent de mettre en place des systèmes complexes très facilement. On peut très bien imaginer utiliser ces fonctionnalités dans un service Windows qui exécuterait des tâches envoyées par des clients externes. Il y a encore beaucoup de fonctionnalités disponibles, notamment avec le QueuedTaskScheduler. A vous de les découvrir. 31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 9