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 :

Créer un evenement personnalisé


Sujet :

C++Builder

  1. #1
    Membre actif Avatar de Jerome S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 62
    Par défaut Créer un evenement personnalisé
    Bonjour,
    J'ai besoin d'aide pour un projet important que je développe en ce moment. Je travaillais jusqu'à présent sous Qt, mais on m'a demandé de développer le projet sous Builder C++.
    J'explique mon problème :
    Je souhaiterai lancer un thread via la fonction CreateThread(NULL, 0, MaFonction, MaClasse, 0, 0) mais que lorsque les étape décrites dans ma fonction se sont écoulées, un évènement soit généré dans ma classe et que j'implémente une méthode qui gère cet évènement.

    Je m'y prend peut-être mal, et je ferai mieux de d’implémenter une nouvelle classe héritant de TThread. A moins que je puisse récupérer le renvoi de la fonction CreateThread et l'utiliser pour savoir quand le thread s'est fini.
    Mais même si je fais ca, je serai obligé d'écrire quelque chose tu type :
    while(renvoiThread->finished()!=true) ce qui rendra l'application bloquante.
    Donc l'idéal, je pense serai de créer un évenement personnalisé. J'ai cherché un peu partout mais je ne sais pas comment faire...

    Merci de votre aide par avance

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 057
    Par défaut
    Si tu veux faire des Threads en C++Builder, je confirme mieux vaut utiliser le TThread plus exactement créer un descendant et redéfinir Execute()

    Avec CreateThread, tu pourrais passer un pointeur de fonction comme propriété de MaClasse, il te servirait de CallBack lancé en fin de MaFonction

    Sinon, dans OnIdle, tu peux d'ailleurs utiliser le Handle du Thread (pas le ThreadID) fourni par CreateThread, tu peux faire WaitForSingleObject pour tester le thread (un petit TimeOut pour ne pas bloquer l'appli)



    Sache que le TThread fourni un Event OnTerminate qui sera appelé une fois le thread terminé !
    Pour information, OnTerminate est appelé depuis la fonction de Thread (avec le TThread, la fonction de thread est unique et elle se charge d'appeler la méthode Execute puis OnTerminate (via Synchronize)

    Ensuite, tous les mécanismes de Signaux ou de Sémaphore existent aussi en Windows avec des méthodes comme CreateEvent, PulseEvent, WaitForSingleObject ou même les très basique PostThreadMessage et PeekMessage
    OnIdle pourrait être utilisé pour consulter les différents signaux ou message, ou même TThread.Finished !


    pour les évènement personnalisé, as-tu pensé à regarder l'unité Classes.hpp et étudier le TNotifyEvent
    Ainsi que regarder les démo fournies comme le TCSpinEdit ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre actif Avatar de Jerome S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 62
    Par défaut
    Effectivement, je n'avais pas pensé à envoyer un pointeur de fonction à ma classe TThread !
    Merci à toi. J’implémenterai ça dès que possible et je vous ferai parvenir mes retour.

    Résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/11/2007, 22h06
  2. [VB.Net] Créer un type personnalisé
    Par andlio dans le forum VB.NET
    Réponses: 5
    Dernier message: 20/07/2007, 16h14
  3. Comment créer un menu personnalisé avec Access2007
    Par marionAccess dans le forum Access
    Réponses: 6
    Dernier message: 24/01/2007, 16h29
  4. Créer un formulaire personnalisé
    Par dddodo dans le forum IHM
    Réponses: 19
    Dernier message: 08/01/2007, 13h17
  5. Réponses: 5
    Dernier message: 24/10/2006, 21h18

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