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,
Version imprimable
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
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 unCode:_di_ITask tasks[2];
Et j'appelle la méthodeCode:Sleep(5000);
et mon petit programme de test part en "not responding" ...Code: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 ?
Pièce jointe 212167
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: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 ...:calim2: