IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Utilisation de TTask


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Points : 85
    Points
    85
    Par défaut Utilisation de TTask
    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,

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    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

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Points : 85
    Points
    85
    Par défaut
    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 Et j'appelle la méthode et mon petit programme de test part en "not responding" ...

    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 ?
    Nom : Capture.JPG
Affichages : 194
Taille : 68,0 Ko

    Merci,
    A suivre ...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    À 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)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Points : 85
    Points
    85
    Par défaut
    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";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (aScrollBar->Position <= aScrollBar->Max)
    J'ai 2 petits soucis :
    - 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 ...

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo