Bonjour à toutes et à tous,
J'aimerais utiliser la classe TTask de la PPL sous C++ Builder XE8. Est-ce que quelqu'un aurait un exemple simple pour me guider ?
Merci par avance,
Bonjour à toutes et à tous,
J'aimerais utiliser la classe TTask de la PPL sous C++ Builder XE8. Est-ce que quelqu'un aurait un exemple simple pour me guider ?
Merci par avance,
Salut
Jette un coup d'oeil sur ce blog https://delphiaball.co.uk/2014/09/08...mming-library/
cela te donnera une bonne idée pour l'utilisation de cette classe
cdlt
vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
je vous en souhaite une excellente lecture ...
A lire : Les règles du forum
Ok merci beaucoup pour le lien. Je viens de tester en C++ Builder XE8, cela fonctionne correctement;
Par contre, j'ai créé 2 tâches via un tableau statique :: tâche qui fait juste un
Code : Sélectionner tout - Visualiser dans une fenêtre à part _di_ITask tasks[2];Et j'appelle la méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sleep(5000);et mon petit programme de test part en "not responding" ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part WaitForall(...)
J'ai du passer par un objet Thread pour éviter cela, et c'est l'objet Thread qui se charge de la création des "TTask" ...
J'ai trouvé l'exemple sur le site d'Embarcadero, et je n'ai pas bien compris le rôle de la classe "TCppSync" et où doit être mis exactement le code qui est "long" : dans la méthode "Invoke" de TCppTask où celle de TCppSync ? ou sert-elle seulement à synchroniser des valeurs avec des composants VCL d'une fiche ?
Merci,
A suivre ...
À vue de nez je dirais que tu n'as pas besoin d'utiliser la classe TCppSync.
Tu vas créer un objet TCppTask et cette classe va appeler sur le thread principal la méthode invoke de l'objet passé en paramètre (c'est la classe TCppSync)
Ok merci pour votre aide;
Du coup, je n'ai pas besoin d'instance de la classe "TCppSync1" héritant de public "TCppInterfacedObject<TThreadProcedure>" ?
Dans mon petit exemple, j'essaye de modifier la valeur "Position" de 2 objets "TScrollBar" sur ma fiche.
Du coup, j'ai mis une boucle while dans la méthode "Invoke" de ma classe "TCppTask1";
J'ai 2 petits soucis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part while (aScrollBar->Position <= aScrollBar->Max)
- Si je n'appelle pas la méthode "TTask::WaitForAll", les 2 tâches CPU fonctionnent, mais lorsque je quitte mon programme, ps de plantage mais le programme est toujours en cours d'exécution dans le gestionnaire de tâches Windows. Si je ne mets pas la boucle, le programme est entièrement terminé après sortie de celui-ci
- Si j'appelle la méthode "TTask::WaitForAll" le programme se fige et part en "not responding" ... de plus, mes 2 curseurs des scrollback ne bougent pas ...
Et effectivement le tout avec ou sans classe "TCppSync" .....
Comprends pas bien ...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager