Implémentation d’un Timer avec TPL

Dans cet article, on cherche à proposer une implémentation d’un Timer en utilisant TPL (i.e. Task Parallel Library). Il existe une classe qui permet d’effectuer un traitement de façon périodique: System.Threading.Timer. Cette classe n’est pas très moderne puisqu’elle existe depuis les premières versions du Framework. Elle permet d’effectuer correctement un traitement périodique toutefois elle souffre…

Continuer à lire

PLINQ en 5 min

L’intérêt de Parallel LINQ (PLINQ) est de proposer plusieurs méthodes pour regrouper (“merger”) le résultat d’un traitement parallèle. Simplement en lançant un traitement parallèle en utilisant AsParallel(), on bénéficiera de méthodes pour, par exemple: Ranger le résultat de chaque traitement dans une structure de données, Agréger les résultats sous forme d’un entier ou d’un double…

Continuer à lire

Exécution asynchrone avec "await" et "async" en 5 min

“Await” et “async” ne sont pas des mot-clé qui permettent la création de thread mais ils permettent d’indiquer au compilateur: les méthodes pour lesquelles l’exécution sera asynchrone en utilisant “async”, les endroits dans le code où on va attendre la fin de l’exécution d’une tâche en utilisant “await”. L’asynchronisme avec Async/Await permet, par exemple, d’éviter…

Continuer à lire

Quelques patterns pour attendre la fin de l’exécution d’une tâche*

*: Le terme “Tâche” est utilisé içi au sens large et non au sens de la Task Parallel Library (TPL). Lorsque plusieurs threads sont utilisés et qu’il est nécessaire de synchroniser certains de ces threads, on peut être amener à implémenter des mécanismes d’attente. Ces mécanismes permettent ainsi: D’éviter un accès concurrent à une section…

Continuer à lire

Utilisation des "Task" en 5 min

Sommaire 1. Quelques patterns courants  Lancer l’exécution d’une tâche  Attendre la fin de l’exécution de la tâche  Récupérer le résultat d’une tâche  Notion de tâche parente  Utilisation de l’option de création “LongRunning”  FromException(), FromCanceled() et FromResult() 2. Gestion des exceptions  AggregateException  CancellationToken 3. TaskScheduler  Task et thread principal  Problème lecteur/écrivain 4. Exécution asynchrone 5. TaskCompletionSource…

Continuer à lire